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

int __regparm3 multiSelect(Parse *pParse,Select *p,SelectDest *pDest)

{
  u32 *puVar1;
  int iVar2;
  sqlite3 *psVar3;
  undefined1 *puVar4;
  Select *pSVar5;
  uint uVar6;
  short sVar7;
  undefined1 *puVar8;
  u8 uVar9;
  byte bVar10;
  LogEst LVar11;
  short sVar12;
  char *pcVar13;
  int iVar14;
  uint uVar15;
  int iVar16;
  Expr *pEVar17;
  int *zP4;
  ExprList *pEVar18;
  CollSeq *pCVar19;
  SelectDest *pSVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  u32 uVar24;
  int iVar25;
  int iVar26;
  Op *pOVar27;
  KeyInfo *pKVar28;
  Parse *iContinue;
  Parse *pPVar29;
  Vdbe *pVVar30;
  uint uVar31;
  short sVar32;
  DistinctCtx *pDVar33;
  int extraout_ECX;
  int extraout_ECX_00;
  ExprList_item *pEVar34;
  Select *pSVar35;
  uint uVar36;
  Select *pSVar37;
  SrcList *pSVar38;
  Select *pSVar39;
  SortCtx *pSVar40;
  int in_GS_OFFSET;
  bool bVar41;
  char *in_stack_ffffff18;
  int iVar42;
  int p3;
  SelectDest *pSVar43;
  char *pcVar44;
  char *in_stack_ffffff1c;
  char *in_stack_ffffff20;
  Parse *pPVar45;
  Select *in_stack_ffffff24;
  undefined4 in_stack_ffffff28;
  Select *local_d0;
  ExprList *local_cc;
  Vdbe *local_c8;
  Vdbe *local_c4;
  Select *local_c0;
  uint local_bc;
  int local_b4;
  KeyInfo *local_b0;
  SelectDest *local_a8;
  int local_a0;
  int local_9c;
  KeyInfo *local_98;
  int local_94;
  int local_90;
  int local_88;
  SelectDest dest;
  SelectDest destA;
  int nLimit;
  uint local_38;
  int local_34;
  int local_30;
  undefined1 local_2c [20];
  Token x;
  
  x.n = 0x9fdad;
  pSVar39 = p->pPrior;
  psVar3 = pParse->db;
  local_2c._12_4_ = *(u32 *)(in_GS_OFFSET + 0x14);
  dest.eDest = pDest->eDest;
  dest._1_3_ = *(undefined3 *)&pDest->field_0x1;
  dest.iSDParm = pDest->iSDParm;
  dest.iSDParm2 = pDest->iSDParm2;
  dest.iSdst = pDest->iSdst;
  dest.nSdst = pDest->nSdst;
  dest.zAffSdst = pDest->zAffSdst;
  dest.pOrderBy = pDest->pOrderBy;
  if (pSVar39->pOrderBy == (ExprList *)0x0) {
    if (pSVar39->pLimit == (Expr *)0x0) {
      local_c8 = pParse->pVdbe;
      if (local_c8 == (Vdbe *)0x0) {
        in_stack_ffffff20 = (char *)0xa0c89;
        local_c8 = sqlite3GetVdbe(pParse);
      }
      if (dest.eDest == '\f') {
        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);
        dest.eDest = '\x0e';
      }
      uVar15 = p->selFlags;
      if ((uVar15 & 0x400) == 0) {
        if ((uVar15 & 0x2000) == 0) {
LAB_0009ff43:
          local_b0 = (KeyInfo *)p->pOrderBy;
          if (local_b0 != (KeyInfo *)0x0) {
            psVar3 = pParse->db;
            pVVar30 = pParse->pVdbe;
            iVar26 = pParse->nLabel + -1;
            iVar14 = pParse->nLabel + -2;
            pParse->nLabel = iVar14;
            uVar15 = (uint)p->op;
            pSVar39 = p->pPrior;
            iVar25 = ((ExprList *)local_b0)->nExpr;
            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&
               (local_cc = p->pEList, 0 < local_cc->nExpr)) {
              uVar36 = 1;
              do {
                if (iVar25 < 1) {
                  if (iVar25 == 0) {
LAB_000a000e:
                    nLimit = 0;
                    local_38 = 0;
                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);
                    if (pEVar17 == (Expr *)0x0) {
                      local_d0 = (Select *)0x7;
                      goto LAB_0009fe71;
                    }
                    pEVar17->flags = pEVar17->flags | 0x400;
                    (pEVar17->u).iValue = uVar36;
                    local_b0 = (KeyInfo *)
                               sqlite3ExprListAppend
                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);
                    p->pOrderBy = (ExprList *)local_b0;
                    if (local_b0 == (KeyInfo *)0x0) {
                      uVar9 = psVar3->mallocFailed;
                    }
                    else {
                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;
                      uVar9 = psVar3->mallocFailed;
                      iVar25 = iVar25 + 1;
                    }
                    if (uVar9 != '\0') break;
                    local_cc = p->pEList;
                  }
                }
                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {
                  iVar16 = 0;
                  pEVar34 = ((ExprList *)local_b0)->a;
                  do {
                    iVar16 = iVar16 + 1;
                    if (iVar16 == iVar25) goto LAB_000a000e;
                    iVar2 = (int)(pEVar34 + 1);
                    pEVar34 = pEVar34 + 1;
                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);
                }
                uVar36 = uVar36 + 1;
              } while ((int)uVar36 <= local_cc->nExpr);
            }
            local_a8 = (SelectDest *)&nLimit;
            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));
            local_98 = (KeyInfo *)0x0;
            if (zP4 != (int *)0x0) {
              *zP4 = iVar25;
              if (0 < iVar25) {
                iVar16 = 0;
                do {
                  *(uint *)((int)zP4 + iVar16 + 4) =
                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;
                  iVar16 = iVar16 + 4;
                } while (iVar25 * 4 != iVar16);
              }
              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);
            }
            p->pOrderBy = (ExprList *)local_b0;
            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);
            pSVar39->pOrderBy = pEVar18;
            if (uVar15 == 0x85) {
              local_b0 = (KeyInfo *)0x0;
              local_94 = 0;
            }
            else {
              puVar4 = (undefined1 *)p->pEList->nExpr;
              local_94 = pParse->nMem + 1;
              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);
              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);
              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);
              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {
                pSVar37 = (Select *)0x0;
                do {
                  pSVar35 = p->pPrior;
                  if ((pSVar35 == (Select *)0x0) ||
                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||
                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,
                                                     (int)pSVar5->pPrior,pSVar37),
                       pCVar19 == (CollSeq *)0x0)) &&
                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||
                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),
                       pCVar19 == (CollSeq *)0x0)))))) {
                    if ((int)pSVar37 < p->pEList->nExpr) {
                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);
                    }
                    else {
                      pCVar19 = (CollSeq *)0x0;
                    }
                  }
                  local_b0->aColl[(int)pSVar37] = pCVar19;
                  local_b0->aSortFlags[(int)pSVar37] = '\0';
                  pSVar37 = (Select *)&pSVar37->field_0x1;
                } while ((Select *)puVar4 != pSVar37);
              }
            }
            pEVar18 = p->pOrderBy;
            p->pPrior = (Select *)0x0;
            pSVar39->pNext = (Select *)0x0;
            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&
               (pParse->eParseMode < 2)) {
              if (pParse->db->aLimit[2] < pEVar18->nExpr) {
                in_stack_ffffff18 = "too many terms in %s BY clause";
                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);
              }
              else {
                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");
              }
            }
            if (((pSVar39->pPrior == (Select *)0x0) &&
                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&
               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {
              iVar16 = pParse->db->aLimit[2];
              if (iVar16 < pEVar18->nExpr) {
                in_stack_ffffff18 = "too many terms in %s BY clause";
                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);
              }
              else {
                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");
              }
            }
            computeLimitRegisters(pParse,p,iVar26);
            iVar16 = p->iLimit;
            if ((uVar15 == 0x85) && (iVar16 != 0)) {
              local_9c = pParse->nMem + 1;
              local_90 = pParse->nMem + 2;
              pParse->nMem = local_90;
              if (p->iOffset != 0) {
                iVar16 = p->iOffset + 1;
              }
              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);
              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);
            }
            else {
              local_90 = 0;
              local_9c = 0;
            }
            if (p->pLimit != (Expr *)0x0) {
              sqlite3ExprDeleteNN(psVar3,p->pLimit);
            }
            p->pLimit = (Expr *)0x0;
            destA.eDest = '\r';
            destA.iSDParm2 = 0;
            destA.zAffSdst = (char *)0x0;
            destA.iSdst = 0;
            iVar21 = pParse->nMem;
            destA.nSdst = 0;
            nLimit = CONCAT31(nLimit._1_3_,0xd);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            uVar36 = iVar21 + 2;
            iVar16 = iVar21 + 1;
            local_2c._0_4_ = 0;
            iVar2 = iVar21 + 3;
            iVar21 = iVar21 + 4;
            pParse->nMem = iVar21;
            uVar9 = p->op;
            pSVar20 = (SelectDest *)"EXCEPT";
            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {
              pSVar20 = (SelectDest *)"UNION ALL";
              if (uVar9 != 0x85) {
                pSVar20 = (SelectDest *)"UNION";
              }
            }
            destA.iSDParm = iVar16;
            local_38 = uVar36;
            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");
            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);
            pSVar39->iLimit = local_9c;
            iVar42 = 1;
            sqlite3VdbeExplain(pParse,'\x01',"LEFT");
            sqlite3Select(pParse,pSVar39,&destA);
            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);
            pPVar45 = pVVar30->pParse;
            pPVar45->nTempReg = '\0';
            pPVar45->nRangeReg = 0;
            if (iVar22 < 0) {
              iVar22 = pVVar30->nOp + -1;
            }
            pOVar27 = (Op *)&dummy_22674;
            if (pVVar30->db->mallocFailed == '\0') {
              pOVar27 = pVVar30->aOp + iVar22;
            }
            pOVar27->p2 = pVVar30->nOp;
            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);
            iVar22 = p->iLimit;
            iVar42 = p->iOffset;
            p->iOffset = 0;
            p->iLimit = local_90;
            p3 = 1;
            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");
            sqlite3Select(pParse,p,local_a8);
            p->iOffset = iVar42;
            p->iLimit = iVar22;
            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);
            pPVar45 = pVVar30->pParse;
            pPVar45->nTempReg = '\0';
            pPVar45->nRangeReg = 0;
            pKVar28 = local_b0;
            iVar22 = generateOutputSubroutine
                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2
                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);
            local_88 = 0;
            if (uVar15 - 0x84 < 2) {
              pKVar28 = local_b0;
              local_88 = generateOutputSubroutine
                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,
                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);
            }
            if ((local_b0 != (KeyInfo *)0x0) &&
               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {
              sqlite3DbFreeNN(local_b0->db,local_b0);
            }
            iVar42 = iVar26;
            local_94 = iVar26;
            if (1 < uVar15 - 0x86) {
              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);
              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);
              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);
              p->nSelectRow = LVar11;
            }
            if (uVar15 == 0x87) {
              if (pSVar39->nSelectRow < p->nSelectRow) {
                p->nSelectRow = pSVar39->nSelectRow;
              }
              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);
              local_a0 = (int)local_a8 + 1;
              local_b0 = (KeyInfo *)iVar42;
            }
            else {
              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);
              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);
              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);
              local_a8 = (SelectDest *)local_a0;
              if (uVar15 != 0x85) {
                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);
                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);
              }
            }
            iVar2 = pVVar30->nOp;
            if (uVar15 - 0x84 < 2) {
              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);
            }
            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);
            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);
            iVar21 = pVVar30->nOp + -1;
            if (-1 < iVar23) {
              iVar21 = iVar23;
            }
            pOVar27 = (Op *)&dummy_22674;
            if (pVVar30->db->mallocFailed == '\0') {
              pOVar27 = pVVar30->aOp + iVar21;
            }
            pOVar27->p2 = pVVar30->nOp;
            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);
            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);
            sqlite3VdbeResolveLabel(pVVar30,iVar14);
            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);
            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);
            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);
            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);
            if (0 < pVVar30->nOp) {
              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;
            }
            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);
            sqlite3VdbeResolveLabel(pVVar30,iVar26);
            if (p->pPrior != (Select *)0x0) {
              clearSelect(psVar3,p->pPrior,1);
            }
            p->pPrior = pSVar39;
            pSVar39->pNext = p;
            iVar26 = pParse->addrExplain;
            if (iVar26 != 0) {
              pVVar30 = pParse->pVdbe;
              if (iVar26 < 0) {
                iVar26 = pVVar30->nOp + -1;
              }
              pOVar27 = (Op *)&dummy_22674;
              if (pVVar30->db->mallocFailed == '\0') {
                pOVar27 = pVVar30->aOp + iVar26;
              }
              iVar26 = pOVar27->p2;
            }
            pParse->addrExplain = iVar26;
            local_d0 = (Select *)(uint)(pParse->nErr != 0);
            goto LAB_0009fe71;
          }
          if (pSVar39->pPrior == (Select *)0x0) {
            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");
            in_stack_ffffff18 = &DAT_00000001;
            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");
          }
          uVar9 = p->op;
          if (uVar9 == 0x85) {
            pSVar39->iLimit = p->iLimit;
            pSVar39->iOffset = p->iOffset;
            pSVar39->pLimit = p->pLimit;
            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);
            p->pLimit = (Expr *)0x0;
            if (local_d0 == (Select *)0x0) {
              local_c4 = (Vdbe *)pSVar39->iLimit;
              iVar26 = pSVar39->iOffset;
              p->pPrior = (Select *)0x0;
              p->iLimit = (int)local_c4;
              p->iOffset = iVar26;
              if (local_c4 != (Vdbe *)0x0) {
                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,
                                                     (int)in_stack_ffffff18);
                iVar26 = p->iOffset;
                if (iVar26 != 0) {
                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);
                }
              }
              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");
              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);
              local_c0 = p->pPrior;
              LVar11 = pSVar39->nSelectRow;
              p->pPrior = pSVar39;
              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);
              p->nSelectRow = LVar11;
              if (((pSVar39->pLimit != (Expr *)0x0) &&
                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&
                 (0 < nLimit)) {
                sVar12 = p->nSelectRow;
                uVar15 = nLimit >> 0x1f;
                if (nLimit < 8) {
                  if (nLimit == 1) {
                    if (0 < sVar12) {
                      sVar12 = 0;
                      goto LAB_000a1cbb;
                    }
                  }
                  else {
                    uVar31 = nLimit;
                    uVar36 = uVar15;
                    sVar7 = 0x28;
                    do {
                      sVar32 = sVar7;
                      uVar6 = uVar31 * 2;
                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;
                      uVar36 = 0;
                      uVar31 = uVar6;
                      sVar7 = sVar32 + -10;
                    } while (uVar6 < 8);
                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {
                      sVar12 = 0x28;
                      local_bc = nLimit;
                      do {
                        sVar12 = sVar12 + -10;
                        bVar41 = CARRY4(local_bc,local_bc);
                        local_bc = local_bc * 2;
                        if (uVar15 * 2 + (uint)bVar41 != 0) break;
                        uVar15 = 0;
                      } while (local_bc < 8);
                      goto LAB_000a1ca8;
                    }
                  }
                }
                else {
                  if (nLimit < 0) {
                    uVar36 = 0x1f;
                    if (nLimit < 0) {
                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {
                      }
                    }
                    uVar36 = uVar36 ^ 0x1f;
                  }
                  else {
                    uVar36 = 0x1f;
                    if (nLimit != 0) {
                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {
                      }
                    }
                    uVar36 = (uVar36 ^ 0x1f) + 0x20;
                  }
                  uVar36 = 0x3c - uVar36;
                  bVar10 = (byte)uVar36 & 0x1f;
                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;
                  if ((uVar36 & 0x20) != 0) {
                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);
                  }
                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {
                    if (nLimit < 0) {
                      uVar36 = 0x1f;
                      if (nLimit < 0) {
                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {
                        }
                      }
                      uVar36 = uVar36 ^ 0x1f;
                    }
                    else {
                      uVar36 = 0x1f;
                      if (nLimit != 0) {
                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {
                        }
                      }
                      uVar36 = (uVar36 ^ 0x1f) + 0x20;
                    }
                    uVar36 = 0x3c - uVar36;
                    sVar12 = (short)uVar36 * 10 + 0x28;
                    bVar10 = (byte)uVar36 & 0x1f;
                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;
                    if ((uVar36 & 0x20) != 0) {
                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);
                    }
LAB_000a1ca8:
                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];
LAB_000a1cbb:
                    p->nSelectRow = sVar12;
                  }
                }
              }
              if (local_c4 != (Vdbe *)0x0) {
                pVVar30 = (Vdbe *)(local_c8->nOp + -1);
                if (-1 < (int)local_c4) {
                  pVVar30 = local_c4;
                }
                pOVar27 = (Op *)&dummy_22674;
                if (local_c8->db->mallocFailed == '\0') {
                  pOVar27 = local_c8->aOp + (int)pVVar30;
                }
                pOVar27->p2 = local_c8->nOp;
              }
              goto LAB_000a0ff8;
            }
          }
          else {
            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {
              local_c4 = (Vdbe *)dest.iSDParm;
              if (dest.eDest != '\x01') {
                local_c4 = (Vdbe *)pParse->nTab;
                pParse->nTab = (int)local_c4 + 1;
                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);
                p->addrOpenEphm[0] = iVar26;
                pSVar37 = p;
                do {
                  pSVar35 = pSVar37;
                  pSVar37 = pSVar35->pNext;
                } while (pSVar37 != (Select *)0x0);
                puVar1 = &pSVar35->selFlags;
                *puVar1 = *puVar1 | 0x20;
              }
              nLimit = CONCAT31(nLimit._1_3_,1);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              local_2c._0_4_ = 0;
              local_38 = (uint)local_c4;
              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);
              if (local_d0 != (Select *)0x0) goto LAB_000a0696;
              uVar9 = p->op;
              pEVar17 = p->pLimit;
              p->pPrior = (Select *)0x0;
              p->pLimit = (Expr *)0x0;
              if (uVar9 == 0x86) {
                nLimit = CONCAT31(nLimit._1_3_,2);
                pcVar44 = "EXCEPT";
              }
              else {
                nLimit = CONCAT31(nLimit._1_3_,1);
                pcVar44 = "UNION ALL";
                if (uVar9 != 0x85) {
                  pcVar44 = "INTERSECT";
                  if (uVar9 != 0x87) {
                    pcVar44 = "UNION";
                  }
                }
              }
              pcVar13 = "%s USING TEMP B-TREE";
              pSVar43 = (SelectDest *)&DAT_00000001;
              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);
              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);
              local_c0 = p->pPrior;
              p->pOrderBy = (ExprList *)0x0;
              p->pPrior = pSVar39;
              if (p->op == 0x84) {
                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);
                p->nSelectRow = LVar11;
              }
              if (p->pLimit != (Expr *)0x0) {
                sqlite3ExprDeleteNN(psVar3,p->pLimit);
              }
              p->iLimit = 0;
              p->iOffset = 0;
              p->pLimit = pEVar17;
              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {
                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);
                pSVar40 = (SortCtx *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar40;
                iVar25 = 0xa183f;
                computeLimitRegisters(pParse,p,(int)pDVar33);
                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);
                iVar26 = local_c8->nOp;
                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,
                                (int)pcVar13,iVar25);
                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);
                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);
                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);
LAB_000a16d1:
                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);
              }
LAB_000a0ff8:
              if (p->pNext == (Select *)0x0) {
                iVar26 = pParse->addrExplain;
                if (iVar26 != 0) {
                  pVVar30 = pParse->pVdbe;
                  if (iVar26 < 0) {
                    iVar26 = pVVar30->nOp + -1;
                  }
                  pOVar27 = (Op *)&dummy_22674;
                  if (pVVar30->db->mallocFailed == '\0') {
                    pOVar27 = pVVar30->aOp + iVar26;
                  }
                  iVar26 = pOVar27->p2;
                }
                pParse->addrExplain = iVar26;
              }
              if (pParse->nErr == 0) goto LAB_000a0282;
              goto LAB_000a028c;
            }
            local_c4 = (Vdbe *)pParse->nTab;
            pParse->nTab = (int)local_c4 + 2;
            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);
            p->addrOpenEphm[0] = iVar26;
            pSVar37 = p;
            do {
              pSVar35 = pSVar37;
              pSVar37 = pSVar35->pNext;
            } while (pSVar37 != (Select *)0x0);
            puVar1 = &pSVar35->selFlags;
            *puVar1 = *puVar1 | 0x20;
            nLimit = CONCAT31(nLimit._1_3_,1);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            local_2c._0_4_ = 0;
            local_38 = (uint)local_c4;
            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);
            if (local_d0 == (Select *)0x0) {
              uVar15 = (int)local_c4 + 1;
              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);
              uVar9 = p->op;
              pEVar17 = p->pLimit;
              p->addrOpenEphm[1] = iVar26;
              p->pPrior = (Select *)0x0;
              p->pLimit = (Expr *)0x0;
              pcVar44 = "EXCEPT";
              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {
                pcVar44 = "UNION ALL";
                if (uVar9 != 0x85) {
                  pcVar44 = "UNION";
                }
              }
              iVar26 = 1;
              local_38 = uVar15;
              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);
              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);
              local_c0 = p->pPrior;
              p->pPrior = pSVar39;
              if (pSVar39->nSelectRow < p->nSelectRow) {
                p->nSelectRow = pSVar39->nSelectRow;
              }
              if (p->pLimit != (Expr *)0x0) {
                sqlite3ExprDeleteNN(psVar3,p->pLimit);
              }
              p->pLimit = pEVar17;
              if (local_d0 == (Select *)0x0) {
                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);
                pSVar40 = (SortCtx *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar40;
                iVar25 = 0xa15e5;
                computeLimitRegisters(pParse,p,(int)pDVar33);
                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);
                if (pParse->nTempReg == '\0') {
                  pSVar20 = (SelectDest *)(pParse->nMem + 1);
                  pParse->nMem = (int)pSVar20;
                }
                else {
                  bVar10 = pParse->nTempReg - 1;
                  pParse->nTempReg = bVar10;
                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];
                }
                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);
                iVar14 = 0;
                pSVar43 = pSVar20;
                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);
                if (pSVar20 != (SelectDest *)0x0) {
                  iVar25 = 0xa1664;
                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);
                }
                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14
                                ,iVar25);
                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);
                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);
                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);
                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);
                goto LAB_000a16d1;
              }
              goto LAB_000a0ff8;
            }
          }
LAB_000a0696:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          goto LAB_0009fe71;
        }
        pSVar38 = p->pSrc;
        local_c0 = (Select *)p->pEList->nExpr;
        local_c4 = pParse->pVdbe;
        local_d0 = p->pPrior;
        if (p->pWin == (Window *)0x0) {
LAB_000a035e:
          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,
                                    (char *)in_stack_ffffff24);
          if (iVar26 == 0) {
            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);
            pParse->nLabel = (int)pDVar33;
            p->nSelectRow = 0x140;
            computeLimitRegisters(pParse,p,(int)pDVar33);
            pEVar17 = p->pLimit;
            iVar26 = pSVar38->nSrc;
            p->pLimit = (Expr *)0x0;
            iVar25 = p->iLimit;
            p->iLimit = 0;
            iVar14 = p->iOffset;
            p->iOffset = 0;
            pEVar18 = p->pOrderBy;
            if (iVar26 < 1) {
LAB_000a0405:
              local_b4 = 0;
            }
            else {
              bVar10 = pSVar38->a[0].fg.field_0x1;
              iVar16 = 0;
              while ((bVar10 & 0x20) == 0) {
                if (iVar16 + 1 == iVar26) goto LAB_000a0405;
                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);
                iVar16 = iVar16 + 1;
              }
              local_b4 = pSVar38->a[iVar16].iCursor;
            }
            uVar15 = pParse->nTab;
            local_bc = uVar15 + 1;
            pParse->nTab = local_bc;
            pSVar20 = (SelectDest *)(pParse->nMem + 1);
            pPVar45 = pParse;
            local_38 = uVar15;
            if (p->op == 0x84) {
              if (pEVar18 != (ExprList *)0x0) {
                nLimit = CONCAT31(nLimit._1_3_,8);
                local_34 = 0;
                local_2c._4_4_ = (char *)0x0;
                local_30 = 0;
                pParse->nTab = uVar15 + 2;
                local_2c._0_4_ = 0;
                pParse->nMem = (int)pSVar20;
                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);
                iVar26 = extraout_ECX_00;
                pSVar39 = local_c0;
                goto LAB_000a049c;
              }
              nLimit = CONCAT31(nLimit._1_3_,6);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              pParse->nTab = uVar15 + 2;
              local_2c._0_4_ = 0;
              pParse->nMem = (int)pSVar20;
              pSVar39 = local_c0;
              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);
              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);
LAB_000a04f4:
              if (local_bc != 0) {
                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);
                p->selFlags = p->selFlags | 0x20;
                p->addrOpenEphm[0] = iVar26;
              }
              p->pOrderBy = (ExprList *)0x0;
              local_d0->pNext = (Select *)0x0;
              pcVar44 = "SETUP";
              pSVar43 = (SelectDest *)&DAT_00000001;
              sqlite3VdbeExplain(pParse,'\x01',"SETUP");
              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);
              local_d0->pNext = p;
              if (iVar26 == 0) {
                local_c0 = (Select *)
                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);
                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);
                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;
                pPVar45 = iContinue;
                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);
                pSVar43 = pSVar20;
LAB_000a191e:
                local_a8 = (SelectDest *)&nLimit;
                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);
                pSVar40 = (SortCtx *)(pParse->nLabel + -1);
                pParse->nLabel = (int)pSVar40;
                if (0 < iVar14) {
                  pSVar43 = (SelectDest *)&DAT_00000001;
                  pPVar45 = pPVar29;
                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);
                  iContinue = pPVar29;
                }
                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,
                                (int)iContinue,(int)pPVar45);
                if (iVar25 != 0) {
                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);
                }
                pVVar30 = local_c4;
                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);
                if ((p->selFlags & 8) == 0) {
                  p->pPrior = (Select *)0x0;
                  pcVar44 = (char *)0x1;
                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);
                  sqlite3Select(pParse,p,local_a8);
                  p->pPrior = local_d0;
                }
                else {
                  pcVar44 = "recursive aggregate queries not supported";
                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30
                                 );
                }
                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);
                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);
              }
            }
            else {
              if (pEVar18 != (ExprList *)0x0) {
                nLimit = CONCAT31(nLimit._1_3_,7);
                local_34 = 0;
                local_2c._4_4_ = (char *)0x0;
                local_30 = 0;
                local_2c._0_4_ = 0;
                pParse->nMem = (int)pSVar20;
                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);
                local_bc = 0;
                iVar26 = extraout_ECX;
                pSVar39 = local_c0;
LAB_000a049c:
                pPVar45 = (Parse *)0xa04a7;
                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);
                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);
                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);
                local_2c._8_4_ = pEVar18;
                goto LAB_000a04f4;
              }
              nLimit = CONCAT31(nLimit._1_3_,5);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              local_2c._0_4_ = 0;
              pParse->nMem = (int)pSVar20;
              pSVar39 = local_c0;
              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);
              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);
              pcVar44 = "SETUP";
              p->pOrderBy = (ExprList *)0x0;
              local_d0->pNext = (Select *)0x0;
              pSVar43 = (SelectDest *)&DAT_00000001;
              sqlite3VdbeExplain(pParse,'\x01',"SETUP");
              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);
              local_d0->pNext = p;
              if (iVar26 == 0) {
                local_c0 = (Select *)
                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);
                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);
LAB_000a1b0c:
                iContinue = (Parse *)pcVar44;
                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);
                goto LAB_000a191e;
              }
            }
            if (p->pOrderBy != (ExprList *)0x0) {
              exprListDeleteNN(pParse->db,p->pOrderBy);
            }
            p->pOrderBy = pEVar18;
            p->pLimit = pEVar17;
          }
        }
        else {
LAB_000a0251:
          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");
        }
        if (pParse->nErr == 0) {
          local_c0 = (Select *)0x0;
          local_d0 = (Select *)0x0;
LAB_000a0282:
          if ((p->selFlags & 0x20) != 0) {
            puVar4 = (undefined1 *)p->pEList->nExpr;
            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);
            if (pKVar28 == (KeyInfo *)0x0) {
              local_d0 = (Select *)0x7;
            }
            else {
              if (0 < (int)puVar4) {
                pSVar39 = (Select *)0x0;
                do {
                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);
                  pKVar28->aColl[(int)pSVar39] = pCVar19;
                  if (pCVar19 == (CollSeq *)0x0) {
                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;
                  }
                  pSVar39 = (Select *)&pSVar39->field_0x1;
                } while ((Select *)puVar4 != pSVar39);
              }
              do {
                iVar26 = 0;
                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {
                  puVar8 = puVar4;
                  if (local_c8->db->mallocFailed == '\0') {
                    local_c8->aOp[iVar25].p2 = (int)puVar4;
                    puVar8 = DAT_001075d8;
                  }
                  DAT_001075d8 = puVar8;
                  pKVar28->nRef = pKVar28->nRef + 1;
                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);
                  p->addrOpenEphm[iVar26] = -1;
                  if (iVar26 == 1) break;
                  iVar26 = 1;
                }
                p = p->pPrior;
              } while (p != (Select *)0x0);
              uVar24 = pKVar28->nRef - 1;
              pKVar28->nRef = uVar24;
              if (uVar24 == 0) {
                sqlite3DbFreeNN(pKVar28->db,pKVar28);
              }
            }
          }
LAB_000a028c:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          if (local_c0 != (Select *)0x0) {
            clearSelect(psVar3,local_c0,1);
          }
          goto LAB_0009fe71;
        }
      }
      else {
        pEVar17 = p->pLimit;
        if (p->pWin != (Window *)0x0) {
          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;
          goto LAB_0009ff43;
        }
        pSVar37 = p->pPrior;
        local_d0 = p;
        if (pSVar37 == (Select *)0x0) {
LAB_000a122a:
          local_cc = (ExprList *)0x1;
          pcVar44 = "";
        }
        else {
          local_cc = (ExprList *)0x1;
          pSVar35 = pSVar37;
          do {
            local_d0 = pSVar35;
            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));
            if (local_d0->pWin != (Window *)0x0) {
              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;
              pSVar38 = p->pSrc;
              local_c0 = (Select *)p->pEList->nExpr;
              local_c4 = pParse->pVdbe;
              local_d0 = pSVar37;
              goto LAB_000a035e;
            }
            pSVar35 = local_d0->pPrior;
          } while (local_d0->pPrior != (Select *)0x0);
          pcVar44 = "S";
          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;
        }
        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);
        if (pEVar17 == (Expr *)0x0) {
          do {
            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,
                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,
                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);
            local_d0->nSelectRow = (LogEst)local_cc;
            local_d0 = local_d0->pNext;
          } while (local_d0 != (Select *)0x0);
        }
        else {
          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,
                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,
                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);
        }
      }
      local_d0 = (Select *)0x0;
      pDest->iSdst = dest.iSdst;
      pDest->nSdst = dest.nSdst;
      goto LAB_0009fe71;
    }
    uVar9 = p->op;
    if (uVar9 == 0x86) {
      pcVar44 = "EXCEPT";
    }
    else if (uVar9 == 0x87) {
      pcVar44 = "INTERSECT";
    }
    else {
      pcVar44 = "UNION";
      if (uVar9 == 0x85) {
        pcVar44 = "UNION ALL";
        pcVar13 = "LIMIT";
        goto LAB_0009fe40;
      }
    }
    pcVar13 = "LIMIT";
  }
  else {
    uVar9 = p->op;
    if (uVar9 == 0x86) {
      pcVar44 = "EXCEPT";
    }
    else if (uVar9 == 0x87) {
      pcVar44 = "INTERSECT";
    }
    else {
      if (uVar9 != 0x85) {
        pcVar44 = "UNION";
        pcVar13 = "ORDER BY";
        goto LAB_0009fe40;
      }
      pcVar44 = "UNION ALL";
    }
    pcVar13 = "ORDER BY";
  }
LAB_0009fe40:
  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);
  pDest->iSdst = dest.iSdst;
  pDest->nSdst = dest.nSdst;
  local_d0 = (Select *)0x1;
LAB_0009fe71:
  if (local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)) {
    return (uint)local_d0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



uint __regparm3 FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)

{
  ushort *puVar1;
  uint *puVar2;
  byte *pbVar3;
  uint uVar4;
  short sVar5;
  char cVar6;
  byte bVar7;
  undefined2 uVar8;
  short sVar9;
  undefined *puVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  int iVar15;
  undefined4 uVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  int iVar21;
  undefined4 uVar22;
  uint uVar23;
  short sVar24;
  char *pcVar25;
  int extraout_EDX;
  byte *pbVar26;
  int unaff_EBP;
  uint uVar27;
  int *piVar28;
  int iVar29;
  int in_GS_OFFSET;
  bool bVar30;
  undefined8 uVar31;
  byte *local_d0;
  int *local_cc;
  int *local_c8;
  int local_c4;
  int local_c0;
  uint local_bc;
  int *local_b0;
  undefined4 local_a8;
  int local_9c;
  int local_94;
  int local_90;
  undefined4 local_88;
  undefined4 local_74;
  int local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined1 local_58;
  int local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int *local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x9fdad;
  uVar31 = FUN_000d0ab3();
  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);
  piVar20 = (int *)uVar31;
  iVar19 = *(int *)(pcVar25 + 0x34);
  iVar15 = *piVar20;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_74 = *param_3;
  local_70 = param_3[1];
  local_6c = param_3[2];
  local_68 = param_3[3];
  local_64 = param_3[4];
  local_60 = param_3[5];
  local_5c = param_3[6];
  if (*(int *)(iVar19 + 0x30) == 0) {
    if (*(int *)(iVar19 + 0x3c) == 0) {
      local_c8 = (int *)piVar20[2];
      if (local_c8 == (int *)0x0) {
        local_c8 = (int *)FUN_00049b90();
      }
      if ((char)local_74 == '\f') {
        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));
        local_74 = CONCAT31(local_74._1_3_,0xe);
      }
      uVar12 = *(uint *)(param_2 + 4);
      if ((uVar12 & 0x400) == 0) {
        if ((uVar12 & 0x2000) == 0) {
LAB_0009ff43:
          local_b0 = *(int **)(param_2 + 0x30);
          if (local_b0 != (int *)0x0) {
            iVar15 = *piVar20;
            piVar28 = (int *)piVar20[2];
            iVar19 = piVar20[0xe] + -1;
            iVar11 = piVar20[0xe] + -2;
            piVar20[0xe] = iVar11;
            uVar12 = (uint)*param_2;
            iVar29 = *(int *)(param_2 + 0x34);
            iVar21 = *local_b0;
            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&
               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {
              uVar27 = 1;
              do {
                if (iVar21 < 1) {
                  if (iVar21 == 0) {
LAB_000a000e:
                    local_3c = 0;
                    local_38 = 0;
                    iVar13 = FUN_0002fd80();
                    if (iVar13 == 0) {
                      local_d0 = (byte *)0x7;
                      goto LAB_0009fe71;
                    }
                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;
                    *(uint *)(iVar13 + 8) = uVar27;
                    local_b0 = (int *)FUN_00054ef0();
                    *(int **)(param_2 + 0x30) = local_b0;
                    if (local_b0 == (int *)0x0) {
                      cVar6 = *(char *)(iVar15 + 0x4d);
                    }
                    else {
                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;
                      cVar6 = *(char *)(iVar15 + 0x4d);
                      iVar21 = iVar21 + 1;
                    }
                    if (cVar6 != '\0') break;
                    local_cc = *(int **)(param_2 + 0x1c);
                  }
                }
                else if (*(ushort *)(local_b0 + 4) != uVar27) {
                  iVar13 = 0;
                  piVar14 = local_b0 + 1;
                  do {
                    iVar13 = iVar13 + 1;
                    if (iVar13 == iVar21) goto LAB_000a000e;
                    puVar1 = (ushort *)(piVar14 + 7);
                    piVar14 = piVar14 + 4;
                  } while (*puVar1 != uVar27);
                }
                uVar27 = uVar27 + 1;
              } while ((int)uVar27 <= *local_cc);
            }
            piVar14 = (int *)FUN_0002ef70();
            if (piVar14 != (int *)0x0) {
              *piVar14 = iVar21;
              if (0 < iVar21) {
                iVar15 = 0;
                do {
                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;
                  iVar15 = iVar15 + 4;
                } while (iVar21 * 4 != iVar15);
              }
              FUN_00050020();
            }
            *(int **)(param_2 + 0x30) = local_b0;
            uVar16 = FUN_0005f2e0();
            *(undefined4 *)(iVar29 + 0x30) = uVar16;
            if (uVar12 == 0x85) {
              local_b0 = (int *)0x0;
              local_94 = 0;
            }
            else {
              iVar15 = **(int **)(param_2 + 0x1c);
              local_94 = piVar20[0xb] + 1;
              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];
              FUN_00049630(local_94);
              local_b0 = (int *)FUN_0002fcc0();
              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {
                iVar13 = 0;
                do {
                  iVar18 = *(int *)(param_2 + 0x34);
                  if ((iVar18 == 0) ||
                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)
                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||
                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {
                    if (iVar13 < **(int **)(param_2 + 0x1c)) {
                      iVar17 = FUN_0004f300();
                    }
                    else {
                      iVar17 = 0;
                    }
                  }
                  local_b0[iVar13 + 5] = iVar17;
                  *(undefined1 *)(local_b0[4] + iVar13) = 0;
                  iVar13 = iVar13 + 1;
                } while (iVar15 != iVar13);
              }
            }
            piVar14 = *(int **)(param_2 + 0x30);
            param_2[0x34] = 0;
            param_2[0x35] = 0;
            param_2[0x36] = 0;
            param_2[0x37] = 0;
            *(undefined4 *)(iVar29 + 0x38) = 0;
            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&
               (*(byte *)(piVar20 + 0x33) < 2)) {
              if (*(int *)(*piVar20 + 0x70) < *piVar14) {
                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);
              }
              else {
                FUN_0005e800(unaff_EBP + 0x31e94);
              }
            }
            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&
               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {
              iVar15 = *(int *)(*piVar20 + 0x70);
              if (iVar15 < **(int **)(iVar29 + 0x30)) {
                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);
              }
              else {
                FUN_0005e800(unaff_EBP + 0x31e94);
              }
            }
            FUN_00094cf0();
            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {
              local_9c = piVar20[0xb] + 1;
              local_90 = piVar20[0xb] + 2;
              piVar20[0xb] = local_90;
              FUN_00049630(local_9c);
              FUN_00049630(local_90);
            }
            else {
              local_90 = 0;
              local_9c = 0;
            }
            if (*(int *)(param_2 + 0x3c) != 0) {
              FUN_00053f30();
            }
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            local_58 = 0xd;
            local_50 = 0;
            local_44 = 0;
            local_4c = 0;
            iVar15 = piVar20[0xb];
            local_48 = 0;
            local_3c = CONCAT31(local_3c._1_3_,0xd);
            local_34 = 0;
            local_28 = 0;
            local_30 = 0;
            local_38 = iVar15 + 2;
            local_54 = iVar15 + 1;
            local_2c = 0;
            piVar20[0xb] = iVar15 + 4;
            bVar7 = *param_2;
            iVar13 = unaff_EBP + 0x31e87;
            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {
              iVar13 = unaff_EBP + 0x31e73;
              if (bVar7 != 0x85) {
                iVar13 = unaff_EBP + 0x31e8e;
              }
            }
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);
            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);
            *(int *)(iVar29 + 8) = local_9c;
            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);
            FUN_0008d250();
            FUN_00049630(0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            if (iVar18 < 0) {
              iVar18 = piVar28[0x1a] + -1;
            }
            iVar13 = unaff_EBP + 0x67823;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar13 = piVar28[0x19] + iVar18 * 0x14;
            }
            *(int *)(iVar13 + 8) = piVar28[0x1a];
            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);
            uVar16 = *(undefined4 *)(param_2 + 8);
            uVar22 = *(undefined4 *)(param_2 + 0xc);
            param_2[0xc] = 0;
            param_2[0xd] = 0;
            param_2[0xe] = 0;
            param_2[0xf] = 0;
            *(int *)(param_2 + 8) = local_90;
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);
            FUN_0008d250();
            *(undefined4 *)(param_2 + 0xc) = uVar22;
            *(undefined4 *)(param_2 + 8) = uVar16;
            FUN_00049630(0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);
            local_88 = 0;
            if (uVar12 - 0x84 < 2) {
              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,
                                      iVar19);
            }
            if ((local_b0 != (int *)0x0) &&
               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {
              FUN_00023410();
            }
            iVar15 = iVar19;
            local_94 = iVar19;
            if (1 < uVar12 - 0x86) {
              iVar15 = FUN_00049630(local_88);
              local_94 = FUN_00049630(iVar19);
              FUN_00049630(iVar15);
              uVar8 = FUN_00024680();
              *(undefined2 *)(param_2 + 2) = uVar8;
            }
            if (uVar12 == 0x87) {
              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);
              }
              local_a8 = FUN_00049630(uVar16);
              FUN_00049630(iVar15);
              FUN_00049630(iVar11);
              local_b0 = (int *)iVar15;
            }
            else {
              local_b0 = (int *)FUN_00049630(uVar16);
              FUN_00049630(iVar19);
              FUN_00049630(local_b0);
              local_a8 = FUN_00049630(uVar16);
              FUN_00049630(iVar15);
              FUN_00049630(iVar11);
              if (uVar12 != 0x85) {
                local_a8 = FUN_00049630(iVar15);
                FUN_00049630(iVar11);
              }
            }
            iVar19 = piVar28[0x1a];
            if (uVar12 - 0x84 < 2) {
              FUN_00049630(local_88);
            }
            FUN_00049630(local_b0);
            FUN_00049630(iVar11);
            iVar15 = piVar28[0x1a] + -1;
            if (-1 < iVar18) {
              iVar15 = iVar18;
            }
            iVar11 = unaff_EBP + 0x67823;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar11 = piVar28[0x19] + iVar15 * 0x14;
            }
            *(int *)(iVar11 + 8) = piVar28[0x1a];
            FUN_00049630(local_94);
            FUN_00049630(local_b0);
            FUN_000330b0();
            FUN_00049630(0);
            FUN_000436c0(0xfffffff1);
            FUN_000493f0(local_30,iVar21);
            FUN_000436c0(0xfffffff7);
            if (0 < piVar28[0x1a]) {
              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;
            }
            FUN_000493f0(local_a8,iVar19);
            FUN_000330b0();
            if (*(int *)(param_2 + 0x34) != 0) {
              FUN_00053bb0();
            }
            *(int *)(param_2 + 0x34) = iVar29;
            *(byte **)(iVar29 + 0x38) = param_2;
            iVar19 = piVar20[0x36];
            if (iVar19 != 0) {
              piVar28 = (int *)piVar20[2];
              if (iVar19 < 0) {
                iVar19 = piVar28[0x1a] + -1;
              }
              iVar15 = unaff_EBP + 0x67823;
              if (*(char *)(*piVar28 + 0x4d) == '\0') {
                iVar15 = piVar28[0x19] + iVar19 * 0x14;
              }
              iVar19 = *(int *)(iVar15 + 8);
            }
            piVar20[0x36] = iVar19;
            local_d0 = (byte *)(uint)(piVar20[9] != 0);
            goto LAB_0009fe71;
          }
          if (*(int *)(iVar19 + 0x34) == 0) {
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);
          }
          bVar7 = *param_2;
          if (bVar7 == 0x85) {
            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);
            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);
            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);
            local_d0 = (byte *)FUN_0008d250();
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            if (local_d0 == (byte *)0x0) {
              local_c4 = *(int *)(iVar19 + 8);
              uVar16 = *(undefined4 *)(iVar19 + 0xc);
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              *(int *)(param_2 + 8) = local_c4;
              *(undefined4 *)(param_2 + 0xc) = uVar16;
              if (local_c4 != 0) {
                uVar31 = FUN_00049630(0);
                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);
                local_c4 = (int)uVar31;
                iVar29 = *(int *)(param_2 + 0xc);
                if (iVar29 != 0) {
                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);
                }
              }
              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);
              local_d0 = (byte *)FUN_0008d250();
              local_c0 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar19;
              uVar8 = FUN_00024680();
              *(undefined2 *)(param_2 + 2) = uVar8;
              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&
                 (0 < (int)local_3c)) {
                sVar9 = *(short *)(param_2 + 2);
                uVar12 = (int)local_3c >> 0x1f;
                if ((int)local_3c < 8) {
                  if (local_3c == 1) {
                    if (0 < sVar9) {
                      sVar9 = 0;
                      goto LAB_000a1cbb;
                    }
                  }
                  else {
                    uVar23 = local_3c;
                    uVar27 = uVar12;
                    sVar5 = 0x28;
                    do {
                      sVar24 = sVar5;
                      uVar4 = uVar23 * 2;
                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;
                      uVar27 = 0;
                      uVar23 = uVar4;
                      sVar5 = sVar24 + -10;
                    } while (uVar4 < 8);
                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))
                        < sVar9) {
                      sVar9 = 0x28;
                      local_bc = local_3c;
                      do {
                        sVar9 = sVar9 + -10;
                        bVar30 = CARRY4(local_bc,local_bc);
                        local_bc = local_bc * 2;
                        if (uVar12 * 2 + (uint)bVar30 != 0) break;
                        uVar12 = 0;
                      } while (local_bc < 8);
                      goto LAB_000a1ca8;
                    }
                  }
                }
                else {
                  if ((int)local_3c < 0) {
                    uVar27 = 0x1f;
                    if ((int)local_3c < 0) {
                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {
                      }
                    }
                    uVar27 = uVar27 ^ 0x1f;
                  }
                  else {
                    uVar27 = 0x1f;
                    if (local_3c != 0) {
                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {
                      }
                    }
                    uVar27 = (uVar27 ^ 0x1f) + 0x20;
                  }
                  uVar27 = 0x3c - uVar27;
                  bVar7 = (byte)uVar27 & 0x1f;
                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;
                  if ((uVar27 & 0x20) != 0) {
                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);
                  }
                  if ((short)((short)uVar27 * 10 + 0x1e +
                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {
                    if ((int)local_3c < 0) {
                      uVar27 = 0x1f;
                      if ((int)local_3c < 0) {
                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {
                        }
                      }
                      uVar27 = uVar27 ^ 0x1f;
                    }
                    else {
                      uVar27 = 0x1f;
                      if (local_3c != 0) {
                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {
                        }
                      }
                      uVar27 = (uVar27 ^ 0x1f) + 0x20;
                    }
                    uVar27 = 0x3c - uVar27;
                    sVar9 = (short)uVar27 * 10 + 0x28;
                    bVar7 = (byte)uVar27 & 0x1f;
                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;
                    if ((uVar27 & 0x20) != 0) {
                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);
                    }
LAB_000a1ca8:
                    local_b0 = (int *)(unaff_EBP + 0x38a1f);
                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);
LAB_000a1cbb:
                    *(short *)(param_2 + 2) = sVar9;
                  }
                }
              }
              if (local_c4 != 0) {
                iVar19 = local_c8[0x1a] + -1;
                if (-1 < local_c4) {
                  iVar19 = local_c4;
                }
                iVar29 = unaff_EBP + 0x67823;
                if (*(char *)(*local_c8 + 0x4d) == '\0') {
                  iVar29 = iVar19 * 0x14 + local_c8[0x19];
                }
                *(int *)(iVar29 + 8) = local_c8[0x1a];
              }
              goto LAB_000a0ff8;
            }
          }
          else {
            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {
              local_38 = local_70;
              if ((char)local_74 != '\x01') {
                iVar29 = piVar20[10];
                piVar20[10] = iVar29 + 1;
                uVar16 = FUN_00049630(0);
                *(undefined4 *)(param_2 + 0x14) = uVar16;
                pbVar3 = param_2;
                do {
                  pbVar26 = pbVar3;
                  pbVar3 = *(byte **)(pbVar26 + 0x38);
                } while (pbVar3 != (byte *)0x0);
                puVar2 = (uint *)(pbVar26 + 4);
                *puVar2 = *puVar2 | 0x20;
                local_38 = iVar29;
              }
              local_3c = CONCAT31(local_3c._1_3_,1);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              local_2c = 0;
              local_d0 = (byte *)FUN_0008d250();
              if (local_d0 != (byte *)0x0) goto LAB_000a0696;
              bVar7 = *param_2;
              uVar16 = *(undefined4 *)(param_2 + 0x3c);
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              param_2[0x3c] = 0;
              param_2[0x3d] = 0;
              param_2[0x3e] = 0;
              param_2[0x3f] = 0;
              if (bVar7 == 0x86) {
                local_3c = CONCAT31(local_3c._1_3_,2);
                iVar29 = unaff_EBP + 0x31e87;
              }
              else {
                local_3c = CONCAT31(local_3c._1_3_,1);
                iVar29 = unaff_EBP + 0x31e73;
                if (bVar7 != 0x85) {
                  iVar29 = unaff_EBP + 0x31e7d;
                  if (bVar7 != 0x87) {
                    iVar29 = unaff_EBP + 0x31e8e;
                  }
                }
              }
              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);
              local_d0 = (byte *)FUN_0008d250();
              local_c0 = *(int *)(param_2 + 0x34);
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              *(int *)(param_2 + 0x34) = iVar19;
              if (*param_2 == 0x84) {
                uVar8 = FUN_00024680();
                *(undefined2 *)(param_2 + 2) = uVar8;
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_00053f30();
              }
              param_2[8] = 0;
              param_2[9] = 0;
              param_2[10] = 0;
              param_2[0xb] = 0;
              param_2[0xc] = 0;
              param_2[0xd] = 0;
              param_2[0xe] = 0;
              param_2[0xf] = 0;
              *(undefined4 *)(param_2 + 0x3c) = uVar16;
              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {
                iVar19 = piVar20[0xe] + -1;
                iVar21 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar21;
                FUN_00094cf0();
                FUN_00049630(iVar19);
                iVar29 = local_c8[0x1a];
                FUN_000964a0(0,0,&local_74,iVar21,iVar19);
                FUN_000330b0();
                FUN_00049630(iVar29);
                FUN_000330b0();
LAB_000a16d1:
                FUN_00049630(0);
              }
LAB_000a0ff8:
              if (*(int *)(param_2 + 0x38) == 0) {
                iVar19 = piVar20[0x36];
                if (iVar19 != 0) {
                  piVar28 = (int *)piVar20[2];
                  if (iVar19 < 0) {
                    iVar19 = piVar28[0x1a] + -1;
                  }
                  iVar29 = unaff_EBP + 0x67823;
                  if (*(char *)(*piVar28 + 0x4d) == '\0') {
                    iVar29 = iVar19 * 0x14 + piVar28[0x19];
                  }
                  iVar19 = *(int *)(iVar29 + 8);
                }
                piVar20[0x36] = iVar19;
              }
              if (piVar20[9] == 0) goto LAB_000a0282;
              goto LAB_000a028c;
            }
            iVar29 = piVar20[10];
            piVar20[10] = iVar29 + 2;
            uVar16 = FUN_00049630(0);
            *(undefined4 *)(param_2 + 0x14) = uVar16;
            pbVar3 = param_2;
            do {
              pbVar26 = pbVar3;
              pbVar3 = *(byte **)(pbVar26 + 0x38);
            } while (pbVar3 != (byte *)0x0);
            puVar2 = (uint *)(pbVar26 + 4);
            *puVar2 = *puVar2 | 0x20;
            local_3c = CONCAT31(local_3c._1_3_,1);
            local_34 = 0;
            local_28 = 0;
            local_30 = 0;
            local_2c = 0;
            local_38 = iVar29;
            local_d0 = (byte *)FUN_0008d250();
            if (local_d0 == (byte *)0x0) {
              uVar22 = FUN_00049630(0);
              bVar7 = *param_2;
              uVar16 = *(undefined4 *)(param_2 + 0x3c);
              *(undefined4 *)(param_2 + 0x18) = uVar22;
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              param_2[0x3c] = 0;
              param_2[0x3d] = 0;
              param_2[0x3e] = 0;
              param_2[0x3f] = 0;
              iVar21 = unaff_EBP + 0x31e87;
              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {
                iVar21 = unaff_EBP + 0x31e73;
                if (bVar7 != 0x85) {
                  iVar21 = unaff_EBP + 0x31e8e;
                }
              }
              local_38 = iVar29 + 1;
              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);
              local_d0 = (byte *)FUN_0008d250();
              local_c0 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar19;
              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_00053f30();
              }
              *(undefined4 *)(param_2 + 0x3c) = uVar16;
              if (local_d0 == (byte *)0x0) {
                iVar19 = piVar20[0xe] + -1;
                iVar29 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar29;
                FUN_00094cf0();
                FUN_00049630(iVar19);
                if (*(char *)((int)piVar20 + 0x13) == '\0') {
                  iVar21 = piVar20[0xb] + 1;
                  piVar20[0xb] = iVar21;
                }
                else {
                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;
                  *(byte *)((int)piVar20 + 0x13) = bVar7;
                  iVar21 = piVar20[bVar7 + 0x26];
                }
                uVar16 = FUN_00049630(iVar21);
                FUN_00068470(iVar29,iVar21,0);
                if (iVar21 != 0) {
                  FUN_000254e0();
                }
                FUN_000964a0(0,0,&local_74,iVar29,iVar19);
                FUN_000330b0();
                FUN_00049630(uVar16);
                FUN_000330b0();
                FUN_00049630(0);
                goto LAB_000a16d1;
              }
              goto LAB_000a0ff8;
            }
          }
LAB_000a0696:
          param_3[3] = local_68;
          param_3[4] = local_64;
          goto LAB_0009fe71;
        }
        piVar28 = *(int **)(param_2 + 0x20);
        local_c0 = **(undefined4 **)(param_2 + 0x1c);
        local_d0 = *(byte **)(param_2 + 0x34);
        if (*(int *)(param_2 + 0x44) == 0) {
LAB_000a035e:
          iVar19 = FUN_0003d5a0(0,0);
          if (iVar19 == 0) {
            iVar13 = piVar20[0xe] + -1;
            piVar20[0xe] = iVar13;
            param_2[2] = 0x40;
            param_2[3] = 1;
            FUN_00094cf0();
            uVar16 = *(undefined4 *)(param_2 + 0x3c);
            iVar19 = *piVar28;
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            iVar29 = *(int *)(param_2 + 8);
            param_2[8] = 0;
            param_2[9] = 0;
            param_2[10] = 0;
            param_2[0xb] = 0;
            iVar21 = *(int *)(param_2 + 0xc);
            param_2[0xc] = 0;
            param_2[0xd] = 0;
            param_2[0xe] = 0;
            param_2[0xf] = 0;
            piVar14 = *(int **)(param_2 + 0x30);
            iVar11 = extraout_EDX;
            if (0 < iVar19) {
              iVar18 = 0;
              bVar7 = *(byte *)((int)piVar28 + 0x2d);
              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {
                iVar11 = iVar18 * 0x44;
                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);
              }
            }
            local_38 = piVar20[10];
            local_bc = local_38 + 1;
            piVar20[10] = local_bc;
            iVar19 = piVar20[0xb] + 1;
            if (*param_2 == 0x84) {
              if (piVar14 != (int *)0x0) {
                local_3c = CONCAT31(local_3c._1_3_,8);
                local_34 = 0;
                local_28 = 0;
                local_30 = 0;
                piVar20[10] = local_38 + 2;
                local_2c = 0;
                piVar20[0xb] = iVar19;
                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);
                goto LAB_000a049c;
              }
              local_3c = CONCAT31(local_3c._1_3_,6);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              piVar20[10] = local_38 + 2;
              local_2c = 0;
              piVar20[0xb] = iVar19;
              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);
              FUN_00049630(local_c0);
LAB_000a04f4:
              if (local_bc != 0) {
                uVar22 = FUN_00049630(0);
                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;
                *(undefined4 *)(param_2 + 0x14) = uVar22;
              }
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              local_d0[0x38] = 0;
              local_d0[0x39] = 0;
              local_d0[0x3a] = 0;
              local_d0[0x3b] = 0;
              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);
              iVar11 = FUN_0008d250();
              *(byte **)(local_d0 + 0x38) = param_2;
              if (iVar11 == 0) {
                local_c0 = FUN_00049630(iVar13);
                uVar22 = FUN_00049630(0);
                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;
                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);
LAB_000a191e:
                uVar22 = FUN_00049630(0);
                iVar19 = piVar20[0xe] + -1;
                piVar20[0xe] = iVar19;
                if (0 < iVar21) {
                  FUN_000493f0(iVar19,1,uVar22,uVar22);
                }
                FUN_000964a0(0,0,&local_74,iVar19,iVar13);
                if (iVar29 != 0) {
                  FUN_00049630(iVar13);
                }
                uVar22 = FUN_000330b0();
                if ((param_2[4] & 8) == 0) {
                  param_2[0x34] = 0;
                  param_2[0x35] = 0;
                  param_2[0x36] = 0;
                  param_2[0x37] = 0;
                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);
                  FUN_0008d250();
                  *(byte **)(param_2 + 0x34) = local_d0;
                }
                else {
                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);
                }
                FUN_00049630(local_c0);
                FUN_000330b0();
              }
            }
            else {
              if (piVar14 != (int *)0x0) {
                local_3c = CONCAT31(local_3c._1_3_,7);
                local_34 = 0;
                local_28 = 0;
                local_30 = 0;
                local_2c = 0;
                piVar20[0xb] = iVar19;
                FUN_000493f0(iVar19,local_c0);
                local_bc = 0;
LAB_000a049c:
                FUN_00050020();
                FUN_00049630(*piVar14 + 2);
                FUN_000436c0(0xfffffff7);
                local_24 = piVar14;
                goto LAB_000a04f4;
              }
              local_3c = CONCAT31(local_3c._1_3_,5);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              local_2c = 0;
              piVar20[0xb] = iVar19;
              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);
              FUN_00049630(local_c0);
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              local_d0[0x38] = 0;
              local_d0[0x39] = 0;
              local_d0[0x3a] = 0;
              local_d0[0x3b] = 0;
              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);
              iVar11 = FUN_0008d250();
              *(byte **)(local_d0 + 0x38) = param_2;
              if (iVar11 == 0) {
                local_c0 = FUN_00049630(iVar13);
                FUN_00049630(0);
LAB_000a1b0c:
                FUN_00049630(iVar19);
                goto LAB_000a191e;
              }
            }
            if (*(int *)(param_2 + 0x30) != 0) {
              FUN_00054000();
            }
            *(int **)(param_2 + 0x30) = piVar14;
            *(undefined4 *)(param_2 + 0x3c) = uVar16;
          }
        }
        else {
LAB_000a0251:
          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);
        }
        if (piVar20[9] == 0) {
          local_c0 = 0;
          local_d0 = (byte *)0x0;
LAB_000a0282:
          if ((param_2[4] & 0x20) != 0) {
            iVar19 = **(int **)(param_2 + 0x1c);
            piVar20 = (int *)FUN_0002fcc0();
            if (piVar20 == (int *)0x0) {
              local_d0 = (byte *)0x7;
            }
            else {
              if (0 < iVar19) {
                iVar29 = 0;
                do {
                  iVar21 = FUN_0004ff90(iVar29);
                  piVar20[iVar29 + 5] = iVar21;
                  if (iVar21 == 0) {
                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);
                  }
                  iVar29 = iVar29 + 1;
                } while (iVar19 != iVar29);
              }
              do {
                iVar15 = 0;
                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {
                  if (*(char *)(*local_c8 + 0x4d) == '\0') {
                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =
                         iVar19;
                  }
                  else {
                    *(int *)(unaff_EBP + 0x6782b) = iVar19;
                  }
                  *piVar20 = *piVar20 + 1;
                  FUN_000436c0(0xfffffff7);
                  pbVar3 = param_2 + iVar15 * 4 + 0x14;
                  pbVar3[0] = 0xff;
                  pbVar3[1] = 0xff;
                  pbVar3[2] = 0xff;
                  pbVar3[3] = 0xff;
                  if (iVar15 == 1) break;
                  iVar15 = 1;
                }
                param_2 = *(byte **)(param_2 + 0x34);
              } while (param_2 != (byte *)0x0);
              iVar19 = *piVar20;
              *piVar20 = iVar19 + -1;
              if (iVar19 + -1 == 0) {
                FUN_00023410();
              }
            }
          }
LAB_000a028c:
          param_3[3] = local_68;
          param_3[4] = local_64;
          if (local_c0 != 0) {
            FUN_00053bb0();
          }
          goto LAB_0009fe71;
        }
      }
      else {
        iVar29 = *(int *)(param_2 + 0x3c);
        if (*(int *)(param_2 + 0x44) != 0) {
          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;
          goto LAB_0009ff43;
        }
        pbVar3 = *(byte **)(param_2 + 0x34);
        local_d0 = param_2;
        if (pbVar3 == (byte *)0x0) {
LAB_000a122a:
          local_cc = (int *)0x1;
          iVar19 = unaff_EBP + 0x327e3;
        }
        else {
          local_cc = (int *)0x1;
          pbVar26 = pbVar3;
          do {
            local_d0 = pbVar26;
            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));
            if (*(int *)(local_d0 + 0x44) != 0) {
              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;
              piVar28 = *(int **)(param_2 + 0x20);
              local_c0 = **(undefined4 **)(param_2 + 0x1c);
              local_d0 = pbVar3;
              goto LAB_000a035e;
            }
            pbVar26 = *(byte **)(local_d0 + 0x34);
          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);
          iVar19 = unaff_EBP + 0x329e1;
          if (local_cc == (int *)0x1) goto LAB_000a122a;
        }
        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);
        if (iVar29 == 0) {
          do {
            FUN_000964a0(0,0,&local_74,1,1);
            *(short *)(local_d0 + 2) = (short)local_cc;
            local_d0 = *(byte **)(local_d0 + 0x38);
          } while (local_d0 != (byte *)0x0);
        }
        else {
          FUN_000964a0(0,0,&local_74,1,1);
        }
      }
      local_d0 = (byte *)0x0;
      param_3[3] = local_68;
      param_3[4] = local_64;
      goto LAB_0009fe71;
    }
    cVar6 = *pcVar25;
    if (cVar6 == -0x7a) {
      iVar19 = unaff_EBP + 0x31e87;
    }
    else if (cVar6 == -0x79) {
      iVar19 = unaff_EBP + 0x31e7d;
    }
    else {
      iVar19 = unaff_EBP + 0x31e8e;
      if (cVar6 == -0x7b) {
        iVar19 = unaff_EBP + 0x31e73;
        puVar10 = (undefined *)(unaff_EBP + 0x323ff);
        goto LAB_0009fe40;
      }
    }
    puVar10 = (undefined *)(unaff_EBP + 0x323ff);
  }
  else {
    cVar6 = *pcVar25;
    if (cVar6 == -0x7a) {
      iVar19 = unaff_EBP + 0x31e87;
    }
    else if (cVar6 == -0x79) {
      iVar19 = unaff_EBP + 0x31e7d;
    }
    else {
      if (cVar6 != -0x7b) {
        iVar19 = unaff_EBP + 0x31e8e;
        puVar10 = &UNK_0003228a + unaff_EBP;
        goto LAB_0009fe40;
      }
      iVar19 = unaff_EBP + 0x31e73;
    }
    puVar10 = &UNK_0003228a + unaff_EBP;
  }
LAB_0009fe40:
  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);
  param_3[3] = local_68;
  param_3[4] = local_64;
  local_d0 = (byte *)0x1;
LAB_0009fe71:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (uint)local_d0;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000d1450();
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
MOV EBX,ECX
CALL 0x000d0ab3
ADD EBP,0x66253
SUB ESP,0xcc
MOV ESI,dword ptr [EDX + 0x34]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xbc],ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EBX]
MOV dword ptr [ESP + 0x68],EAX
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x6c],EAX
MOV EAX,dword ptr [EBX + 0x8]
MOV dword ptr [ESP + 0x70],EAX
MOV EAX,dword ptr [EBX + 0xc]
MOV dword ptr [ESP + 0x74],EAX
MOV EAX,dword ptr [EBX + 0x10]
MOV dword ptr [ESP + 0x78],EAX
MOV EAX,dword ptr [EBX + 0x14]
MOV dword ptr [ESP + 0x7c],EAX
MOV EAX,dword ptr [EBX + 0x18]
MOV dword ptr [ESP + 0x80],EAX
MOV EAX,dword ptr [ESI + 0x30]
TEST EAX,EAX
JZ 0x0009fe98
MOVZX EAX,byte ptr [EDX]
CMP AL,0x86
JZ 0x0009fef0
CMP AL,0x87
JZ 0x0009fed0
CMP AL,0x85
JZ 0x0009ff00
LEA EDX,[EBP + 0xfffcbc3b]
LEA EAX,[EBP + 0xfffcc037]
NOP
LEA ESI,[ESI]
PUSH EDX
PUSH EAX
LEA EAX,[EBP + 0xfffceb14]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003d470
MOV EAX,dword ptr [ESP + 0x84]
MOV dword ptr [EBX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x88]
ADD ESP,0x10
MOV dword ptr [EBX + 0x10],EAX
MOV dword ptr [ESP + 0xc],0x1
MOV EDI,dword ptr [ESP + 0xbc]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0xc]
JNZ 0x000a1b7b
ADD ESP,0xcc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x3c]
TEST EAX,EAX
JZ 0x0009ff10
MOVZX EAX,byte ptr [EDX]
CMP AL,0x86
JZ 0x0009fee8
CMP AL,0x87
JZ 0x000a0218
CMP AL,0x85
LEA EDX,[EBP + 0xfffcbc3b]
JZ 0x000a0200
LEA EAX,[EBP + 0xfffcc1ac]
JMP 0x0009fe40
LEA EDX,[EBP + 0xfffcbc2a]
LEA EAX,[EBP + 0xfffcc037]
JMP 0x0009fe40
LEA EDX,[EBP + 0xfffcbc34]
JMP 0x0009febc
LEA EDX,[EBP + 0xfffcbc34]
JMP 0x0009fed6
LEA EDX,[EBP + 0xfffcbc20]
JMP 0x0009fed6
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
MOV dword ptr [ESP + 0x14],EAX
JZ 0x000a0c80
CMP byte ptr [ESP + 0x68],0xc
JZ 0x000a0c50
MOV EDX,dword ptr [EDI + 0x4]
TEST DH,0x4
JNZ 0x000a02e0
AND DH,0x20
JNZ 0x000a0228
MOV ECX,dword ptr [EDI + 0x30]
TEST ECX,ECX
MOV dword ptr [ESP + 0x2c],ECX
JZ 0x000a05d0
MOV ESI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESI + 0x38]
LEA EDX,[EAX + -0x1]
SUB EAX,0x2
MOV dword ptr [ESI + 0x38],EAX
MOV dword ptr [ESP + 0x38],EAX
MOVZX EAX,byte ptr [EDI]
MOV ESI,dword ptr [EDI + 0x34]
MOV ECX,dword ptr [ECX]
MOV dword ptr [ESP + 0x20],EDX
MOV dword ptr [ESP + 0x14],ESI
CMP EAX,0x85
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x30],ECX
JZ 0x000a1180
MOV EAX,dword ptr [ESP + 0x18]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a1180
MOV EAX,dword ptr [EDI + 0x1c]
MOV ESI,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EAX
TEST ESI,ESI
JLE 0x000a1180
LEA EAX,[ESP + 0xa0]
MOV dword ptr [ESP + 0x28],EDI
MOV dword ptr [ESP + 0x3c],EBX
MOV EDI,dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x30]
MOV ESI,0x1
MOV dword ptr [ESP + 0x34],EAX
LEA ESI,[ESI]
CMP EBX,0x0
LEA EDX,[EDI + 0x4]
JLE 0x000a02c0
MOVZX EAX,word ptr [EDI + 0x10]
CMP EAX,ESI
JZ 0x000a02d0
XOR EAX,EAX
JMP 0x000a0004
MOVZX ECX,word ptr [EDX + 0xc]
CMP ECX,ESI
JZ 0x000a02d0
ADD EAX,0x1
ADD EDX,0x10
CMP EAX,EBX
JNZ 0x0009fff8
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,0x98
MOV dword ptr [ESP + 0xa0],0x0
MOV dword ptr [ESP + 0xa4],0x0
CALL 0x0002fd80
TEST EAX,EAX
JZ 0x000a16fe
OR dword ptr [EAX + 0x4],0x400
MOV dword ptr [EAX + 0x8],ESI
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
MOV EAX,dword ptr [EAX]
CALL 0x00054ef0
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x28]
TEST EDI,EDI
MOV dword ptr [EAX + 0x30],EDI
JZ 0x000a0ea4
MOV EAX,EBX
ADD EBX,0x1
SHL EAX,0x4
MOV word ptr [EDI + EAX*0x1 + 0x10],SI
MOV EAX,dword ptr [ESP + 0x18]
MOVZX EAX,byte ptr [EAX + 0x4d]
ADD ESI,0x1
TEST AL,AL
JNZ 0x000a0097
MOV EAX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [ESP + 0x10],EAX
CMP dword ptr [EAX],ESI
JGE 0x0009ffd8
MOV dword ptr [ESP + 0x30],EBX
MOV dword ptr [ESP + 0x2c],EDI
MOV EBX,dword ptr [ESP + 0x3c]
MOV EDI,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x30]
LEA ESI,[EAX*0x4 + 0x4]
MOV EAX,dword ptr [ESP + 0x18]
XOR ECX,ECX
MOV EDX,ESI
CALL 0x0002ef70
TEST EAX,EAX
MOV EDX,EAX
MOV dword ptr [ESP + 0x50],EAX
MOV dword ptr [ESP + 0x44],0x0
JZ 0x000a0116
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x2c]
ADD ECX,0x4
TEST EAX,EAX
MOV dword ptr [EDX],EAX
JLE 0x000a0107
MOV dword ptr [ESP + 0x10],EBX
SUB ESI,0x4
XOR EAX,EAX
MOV EBX,EDX
LEA ESI,[ESI]
MOVZX EDX,word ptr [ECX + EAX*0x4 + 0xc]
SUB EDX,0x1
MOV dword ptr [EBX + EAX*0x1 + 0x4],EDX
ADD EAX,0x4
CMP ESI,EAX
JNZ 0x000a00f0
MOV EBX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
CALL 0x00050020
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV ESI,dword ptr [ESP + 0x8]
XOR ECX,ECX
MOV dword ptr [EDI + 0x30],EAX
MOV EDX,EAX
MOV EAX,dword ptr [ESI]
CALL 0x0005f2e0
CMP dword ptr [ESP + 0x1c],0x85
MOV ECX,dword ptr [ESP + 0x14]
MOV dword ptr [ECX + 0x30],EAX
JZ 0x000a06b0
MOV EAX,dword ptr [EDI + 0x1c]
SUB ESP,0xc
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESI + 0x2c]
LEA EDX,[EAX + 0x1]
LEA EAX,[ECX + EAX*0x1 + 0x1]
MOV dword ptr [ESP + 0x34],ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x54],EDX
MOV dword ptr [ESI + 0x2c],EAX
PUSH EDX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0x45
CALL 0x00049630
MOV ESI,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,0x1
MOV EDX,ESI
CALL 0x0002fcc0
MOV dword ptr [ESP + 0x3c],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a06c0
TEST ESI,ESI
JLE 0x000a06c0
MOV dword ptr [ESP + 0x10],EDI
XOR ESI,ESI
MOV EDI,EAX
MOV dword ptr [ESP + 0x3c],EBX
JMP 0x000a01ca
XOR EAX,EAX
MOV dword ptr [EDI + ESI*0x4 + 0x14],EAX
MOV EAX,dword ptr [EDI + 0x10]
MOV byte ptr [EAX + ESI*0x1],0x0
ADD ESI,0x1
CMP dword ptr [ESP + 0x28],ESI
JZ 0x000a1192
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [EAX + 0x34]
TEST EBX,EBX
JNZ 0x000a0d28
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x1c]
CMP dword ptr [EAX],ESI
JLE 0x000a01b0
MOV EDX,ESI
SHL EDX,0x4
MOV EDX,dword ptr [EAX + EDX*0x1 + 0x4]
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0004f300
JMP 0x000a01b2
LEA EDX,[EBP + 0xfffcbc20]
LEA EAX,[EBP + 0xfffcc1ac]
JMP 0x0009fe40
LEA EDX,[EBP + 0xfffcbc2a]
JMP 0x0009febc
MOV EAX,dword ptr [EDI + 0x1c]
MOV ECX,dword ptr [EDI + 0x44]
MOV ESI,dword ptr [EDI + 0x20]
MOV EAX,dword ptr [EAX]
TEST ECX,ECX
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EDI + 0x34]
MOV dword ptr [ESP + 0xc],EAX
JZ 0x000a035e
LEA EAX,[EBP + 0xfffceb40]
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003d470
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x24]
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JNZ 0x000a05b4
MOV dword ptr [ESP + 0x1c],0x0
TEST byte ptr [EDI + 0x4],0x20
JNZ 0x000a119f
MOV EAX,dword ptr [ESP + 0x74]
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [EBX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x78]
TEST EDX,EDX
MOV dword ptr [EBX + 0x10],EAX
JZ 0x0009fe71
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,0x1
CALL 0x00053bb0
JMP 0x0009fe71
JZ 0x000a000e
LEA ESI,[ESI]
LEA EDI,[EDI]
ADD ESI,0x1
MOV EAX,dword ptr [ESP + 0x10]
JMP 0x000a008f
MOV EAX,dword ptr [EDI + 0x3c]
XOR ECX,ECX
MOV dword ptr [ESP + 0x18],EAX
TEST EAX,EAX
MOV EAX,dword ptr [EDI + 0x44]
SETZ CL
TEST EAX,EAX
JNZ 0x000a16f0
MOV EAX,dword ptr [EDI + 0x34]
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JZ 0x000a1226
MOV dword ptr [ESP + 0x20],ESI
MOV dword ptr [ESP + 0x1c],EDX
MOV ESI,0x1
JMP 0x000a032d
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JZ 0x000a0c98
MOV EAX,EDX
MOV EDX,dword ptr [EAX + 0x44]
ADD ESI,ECX
TEST EDX,EDX
JZ 0x000a0320
MOV EDX,dword ptr [ESP + 0x1c]
MOV ESI,dword ptr [ESP + 0x20]
AND DH,0x20
JZ 0x0009ff43
MOV EAX,dword ptr [EDI + 0x1c]
MOV ESI,dword ptr [EDI + 0x20]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x18],EAX
SUB ESP,0x8
XOR ECX,ECX
MOV EDX,0x21
PUSH 0x0
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0003d5a0
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a0267
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,0x140
MOV ECX,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x28],ECX
SUB ECX,0x1
MOV dword ptr [EAX + 0x38],ECX
MOV word ptr [EDI + 0x2],DX
MOV EDX,EDI
MOV dword ptr [ESP + 0x38],ECX
CALL 0x00094cf0
MOV EAX,dword ptr [EDI + 0x3c]
MOV ECX,dword ptr [ESI]
MOV dword ptr [EDI + 0x3c],0x0
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [EDI + 0x8]
TEST ECX,ECX
MOV dword ptr [EDI + 0x8],0x0
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [EDI + 0xc],0x0
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [EDI + 0x30]
MOV dword ptr [ESP + 0x2c],EAX
JLE 0x000a0405
XOR EAX,EAX
TEST byte ptr [ESI + 0x2d],0x20
JZ 0x000a03fe
JMP 0x000a1718
IMUL EDX,EAX,0x44
TEST byte ptr [ESI + EDX*0x1 + 0x2d],0x20
JNZ 0x000a1718
ADD EAX,0x1
CMP EAX,ECX
JNZ 0x000a03f0
MOV dword ptr [ESP + 0x28],0x0
MOV EAX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EAX + 0x28]
LEA ECX,[ESI + 0x1]
MOV dword ptr [EAX + 0x28],ECX
MOV EAX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x34],ECX
ADD EAX,0x1
CMP byte ptr [EDI],0x84
MOV dword ptr [ESP + 0x30],EAX
JZ 0x000a17a4
MOV EDX,dword ptr [ESP + 0x2c]
TEST EDX,EDX
JZ 0x000a1a0e
MOV ECX,dword ptr [ESP + 0x8]
MOV byte ptr [ESP + 0xa0],0x7
SUB ESP,0x8
MOV dword ptr [ESP + 0xac],ESI
MOV dword ptr [ESP + 0xb0],0x0
MOV EDX,0x72
MOV dword ptr [ESP + 0xbc],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xb8],0x0
MOV dword ptr [ECX + 0x2c],EAX
PUSH dword ptr [ESP + 0x24]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000493f0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
CALL 0x00050020
SUB ESP,0xc
MOV dword ptr [ESP + 0x28],EAX
MOV ECX,ESI
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [EDX]
MOV EDX,0x64
MOV dword ptr [ESP + 0x40],EAX
ADD EAX,0x2
PUSH EAX
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP],0xfffffff7
CALL 0x000436c0
MOV EDX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0xc8],EDX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JZ 0x000a0517
SUB ESP,0xc
MOV ECX,EAX
MOV EDX,0x64
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
OR dword ptr [EDI + 0x4],0x20
MOV dword ptr [EDI + 0x14],EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EDI + 0x30],0x0
SUB ESP,0x4
MOV dword ptr [EAX + 0x38],0x0
LEA EAX,[EBP + 0xfffcc1c9]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
LEA EDX,[ESP + 0xb0]
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x44],EDX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x0008d250
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ECX + 0x38],EDI
JZ 0x000a18b8
MOV EDX,dword ptr [EDI + 0x30]
TEST EDX,EDX
JZ 0x000a057c
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
CALL 0x00054000
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDI + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [EDI + 0x3c],EAX
JMP 0x000a0267
SUB ESP,0xc
MOV ECX,0xffffffff
PUSH 0x1
PUSH 0x1
LEA EAX,[ESP + 0x7c]
PUSH EAX
PUSH 0x0
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000964a0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [EBX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x78]
MOV dword ptr [EBX + 0x10],EAX
JMP 0x0009fe71
MOV ECX,dword ptr [ESI + 0x34]
TEST ECX,ECX
JZ 0x000a129d
MOVZX EAX,byte ptr [EDI]
CMP AL,0x85
JZ 0x000a1020
CMP AL,0x86
JZ 0x000a0eb1
CMP AL,0x84
JZ 0x000a0eb1
MOV EDX,dword ptr [ESP + 0x8]
SUB ESP,0xc
MOV ECX,dword ptr [EDX + 0x28]
LEA EAX,[ECX + 0x2]
MOV dword ptr [ESP + 0x24],ECX
MOV dword ptr [EDX + 0x28],EAX
PUSH 0x0
MOV EDX,0x64
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
ADD ESP,0x10
MOV dword ptr [EDI + 0x14],EAX
MOV EDX,EDI
JMP 0x000a062a
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x38]
TEST EAX,EAX
JNZ 0x000a0628
MOV EAX,dword ptr [ESP + 0x18]
OR dword ptr [EDX + 0x4],0x20
LEA ECX,[ESP + 0xa0]
MOV EDX,ESI
MOV byte ptr [ESP + 0xa0],0x1
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xac],0x0
MOV dword ptr [ESP + 0xa4],EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ESP + 0x34],ECX
CALL 0x0008d250
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JZ 0x000a14eb
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [EBX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x78]
MOV dword ptr [EBX + 0x10],EAX
JMP 0x0009fe71
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x48],0x0
MOV ECX,dword ptr [EDI + 0x30]
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EDI + 0x34],0x0
TEST ECX,ECX
MOV dword ptr [EAX + 0x38],0x0
JZ 0x000a06f2
MOV ESI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESI]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a06f2
CMP byte ptr [ESI + 0xcc],0x1
JBE 0x000a13bd
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JZ 0x000a1316
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
CALL 0x00094cf0
CMP dword ptr [ESP + 0x1c],0x85
MOV ECX,dword ptr [EDI + 0x8]
JNZ 0x000a0725
TEST ECX,ECX
JNZ 0x000a136b
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV EDX,dword ptr [EDI + 0x3c]
TEST EDX,EDX
JZ 0x000a0745
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x00053f30
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [EDI + 0x3c],0x0
MOV byte ptr [ESP + 0x84],0xd
MOV dword ptr [ESP + 0x8c],0x0
MOV dword ptr [ESP + 0x98],0x0
MOV dword ptr [ESP + 0x90],0x0
MOV EAX,dword ptr [ECX + 0x2c]
MOV dword ptr [ESP + 0x94],0x0
MOV byte ptr [ESP + 0xa0],0xd
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xac],0x0
LEA EDX,[EAX + 0x2]
LEA ESI,[EAX + 0x1]
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ESP + 0x10],EDX
LEA EDX,[EAX + 0x3]
ADD EAX,0x4
MOV dword ptr [ECX + 0x2c],EAX
MOV dword ptr [ESP + 0x58],EAX
LEA EAX,[EBP + 0xfffcbc34]
MOV dword ptr [ESP + 0x3c],EDX
MOV EDX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x28],ESI
MOV dword ptr [ESP + 0x88],ESI
MOV dword ptr [ESP + 0xa4],EDX
MOVZX EDX,byte ptr [EDI]
CMP DL,0x86
JZ 0x000a0817
CMP DL,0x87
LEA EAX,[EBP + 0xfffcbc2a]
JZ 0x000a0817
CMP DL,0x85
LEA EAX,[EBP + 0xfffcbc20]
LEA EDX,[EBP + 0xfffcbc3b]
CMOVNZ EAX,EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcc1de]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
POP EDX
POP ECX
MOV ESI,dword ptr [ESP + 0x14]
MOV EDX,0xd
MOV EAX,dword ptr [ESI + 0x68]
MOV dword ptr [ESP + 0x14],EAX
ADD EAX,0x1
PUSH EAX
PUSH 0x0
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x1c],ESI
CALL 0x000493f0
MOV EDX,dword ptr [ESP + 0x50]
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x24]
ADD ESP,0xc
MOV dword ptr [EAX + 0x8],EDX
LEA EAX,[EBP + 0xfffcc1e9]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x18]
LEA ECX,[ESP + 0x94]
CALL 0x0008d250
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0x42
MOV dword ptr [ESP],0x0
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
TEST ESI,ESI
MOV EAX,dword ptr [ECX + 0xc]
MOV dword ptr [ESP + 0xc],ECX
MOV byte ptr [EAX + 0x13],0x0
MOV dword ptr [EAX + 0x1c],0x0
MOV EAX,dword ptr [ECX + 0x68]
MOV ECX,dword ptr [ECX]
LEA EDX,[EAX + -0x1]
CMOVS ESI,EDX
CMP byte ptr [ECX + 0x4d],0x0
LEA EDX,[EBP + 0x15d0]
JNZ 0x000a08df
LEA ECX,[ESI + ESI*0x4]
MOV ESI,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESI + 0x64]
LEA EDX,[EDX + ECX*0x4]
SUB ESP,0x8
MOV dword ptr [EDX + 0x8],EAX
MOV EDX,0xd
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESI + 0x68]
MOV dword ptr [ESP + 0x14],EAX
ADD EAX,0x1
PUSH EAX
PUSH 0x0
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x1c],ESI
CALL 0x000493f0
MOV dword ptr [ESP + 0x50],EAX
MOV EAX,dword ptr [EDI + 0x8]
MOV ESI,dword ptr [EDI + 0xc]
MOV dword ptr [EDI + 0xc],0x0
MOV dword ptr [ESP + 0x64],EAX
MOV EAX,dword ptr [ESP + 0x5c]
ADD ESP,0xc
MOV dword ptr [EDI + 0x8],EAX
LEA EAX,[EBP + 0xfffcc1ee]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
MOV ECX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x0008d250
MOV EDX,dword ptr [ESP + 0x64]
MOV dword ptr [EDI + 0xc],ESI
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [EDI + 0x8],EDX
MOV EDX,0x42
MOV dword ptr [ESP],0x0
MOV EAX,ESI
CALL 0x00049630
MOV EAX,dword ptr [ESI + 0xc]
LEA EDX,[EDI + 0x8]
LEA ESI,[EDI + 0xc]
MOV dword ptr [ESP + 0x6c],EDX
ADD ESP,0xc
MOV ECX,ESI
MOV byte ptr [EAX + 0x13],0x0
MOV dword ptr [EAX + 0x1c],0x0
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x54]
PUSH dword ptr [ESP + 0x4c]
PUSH EBX
LEA EAX,[ESP + 0xac]
PUSH EAX
LEA EAX,[ESP + 0xac]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000684f0
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [ESP + 0x3c]
SUB EAX,0x84
MOV dword ptr [ESP + 0x6c],EAX
ADD ESP,0x20
CMP EAX,0x1
MOV dword ptr [ESP + 0x54],0x0
JBE 0x000a125e
MOV ESI,dword ptr [ESP + 0x2c]
TEST ESI,ESI
JZ 0x000a09f6
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x48],EAX
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [ESI],EAX
JZ 0x000a1217
MOV EAX,dword ptr [ESP + 0x1c]
SUB EAX,0x86
CMP EAX,0x1
JA 0x000a0e40
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x48],ESI
CMP dword ptr [ESP + 0x1c],0x87
JNZ 0x000a0d60
MOV EAX,dword ptr [ESP + 0x14]
MOVZX EAX,word ptr [EAX + 0x2]
CMP word ptr [EDI + 0x2],AX
JLE 0x000a0a30
MOV word ptr [EDI + 0x2],AX
SUB ESP,0xc
MOV EDX,0xc
PUSH dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x4c]
MOV EAX,EBX
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x44],EAX
MOV EDX,0xe
MOV EAX,EBX
MOV dword ptr [ESP],ESI
CALL 0x00049630
POP EAX
PUSH dword ptr [ESP + 0x44]
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBX
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x44]
ADD EAX,0x1
MOV dword ptr [ESP + 0x4c],EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x2c],ESI
CMP dword ptr [ESP + 0x4c],0x1
MOV EAX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [EAX + 0x68]
JBE 0x000a123d
SUB ESP,0xc
MOV EDX,0xe
PUSH dword ptr [ESP + 0x38]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,EBX
CALL 0x00049630
POP ECX
PUSH dword ptr [ESP + 0x44]
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBX
CALL 0x00049630
MOV EAX,dword ptr [EBX + 0x68]
ADD ESP,0x10
MOV ECX,EBX
MOV dword ptr [ESP + 0xc],ECX
MOV EBX,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ECX]
LEA EDX,[EAX + -0x1]
TEST EBX,EBX
MOV EBX,EDX
CMOVNS EBX,dword ptr [ESP + 0x40]
CMP byte ptr [ECX + 0x4d],0x0
LEA EDX,[EBP + 0x15d0]
JNZ 0x000a0afe
MOV EDX,dword ptr [ESP + 0xc]
LEA ECX,[EBX + EBX*0x4]
MOV EDX,dword ptr [EDX + 0x64]
LEA EDX,[EDX + ECX*0x4]
SUB ESP,0xc
MOV dword ptr [EDX + 0x8],EAX
MOV EDX,0xe
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,EBX
CALL 0x00049630
POP EAX
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x20]
MOV EDX,0xe
MOV EAX,EBX
CALL 0x00049630
MOV EDX,dword ptr [ESP + 0x48]
MOV EAX,EBX
CALL 0x000330b0
XOR ECX,ECX
MOV EDX,0x55
MOV EAX,EBX
MOV dword ptr [ESP],0x0
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x60]
MOV EDX,EAX
MOV EAX,EBX
MOV dword ptr [ESP],0xfffffff1
CALL 0x000436c0
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0xb8]
MOV EDX,0x56
MOV ECX,dword ptr [ESP + 0xa0]
MOV EAX,EBX
CALL 0x000493f0
MOV ECX,dword ptr [ESP + 0x54]
MOV EDX,EAX
MOV EAX,EBX
MOV dword ptr [ESP],0xfffffff7
CALL 0x000436c0
MOV EAX,dword ptr [EBX + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x000a0bb5
MOV EDX,dword ptr [EBX + 0x64]
LEA EAX,[EAX + EAX*0x4]
MOV ECX,0x1
LEA EAX,[EDX + EAX*0x4]
MOV word ptr [EAX + -0x12],CX
SUB ESP,0x8
MOV EDX,0x10
PUSH ESI
PUSH dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x4c]
MOV EAX,ESI
CALL 0x000493f0
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,ESI
CALL 0x000330b0
MOV EDX,dword ptr [EDI + 0x34]
ADD ESP,0x10
TEST EDX,EDX
JZ 0x000a0bf4
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,0x1
CALL 0x00053bb0
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EDI + 0x34],EAX
MOV dword ptr [EAX + 0x38],EDI
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDI + 0xd8]
TEST EAX,EAX
JZ 0x000a0c35
MOV EDX,dword ptr [EDI + 0x8]
JNS 0x000a0c17
MOV EAX,dword ptr [EDX + 0x68]
SUB EAX,0x1
MOV EBX,dword ptr [EDX]
LEA ECX,[EBP + 0x15d0]
CMP byte ptr [EBX + 0x4d],0x0
JNZ 0x000a0c2e
LEA ECX,[EAX + EAX*0x4]
MOV EAX,dword ptr [EDX + 0x64]
LEA ECX,[EAX + ECX*0x4]
MOV EAX,dword ptr [ECX + 0x8]
MOV EDI,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [EDI + 0x24]
MOV dword ptr [EDI + 0xd8],EAX
XOR EAX,EAX
TEST EBX,EBX
SETNZ AL
MOV dword ptr [ESP + 0xc],EAX
JMP 0x0009fe71
MOV EAX,dword ptr [EDI + 0x1c]
SUB ESP,0xc
MOV EDX,0x64
PUSH dword ptr [EAX]
MOV ECX,dword ptr [ESP + 0x7c]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
MOV byte ptr [ESP + 0x78],0xe
ADD ESP,0x10
JMP 0x0009ff2e
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x00049b90
MOV dword ptr [ESP + 0x14],EAX
JMP 0x0009ff23
CMP ESI,0x1
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x10],ESI
LEA EAX,[EBP + 0xfffcc78e]
JZ 0x000a122a
SUB ESP,0xc
PUSH EAX
MOV EDI,dword ptr [ESP + 0x20]
LEA EAX,[EBP + 0xfffcc1b2]
PUSH EDI
PUSH EAX
PUSH 0x0
MOV EBP,dword ptr [ESP + 0x24]
PUSH EBP
CALL 0x000496a0
ADD ESP,0x20
MOV ESI,dword ptr [ESP + 0x18]
TEST ESI,ESI
JNZ 0x000a058f
LEA EAX,[ESP + 0x68]
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x8],EBX
MOV EBX,EBP
MOV EBP,EAX
LEA ESI,[ESI]
SUB ESP,0xc
MOV EDX,ESI
MOV ECX,0xffffffff
PUSH 0x1
PUSH 0x1
MOV EAX,EBX
PUSH EBP
PUSH 0x0
PUSH 0x0
CALL 0x000964a0
MOV word ptr [ESI + 0x2],DI
MOV ESI,dword ptr [ESI + 0x38]
ADD ESP,0x20
TEST ESI,ESI
JNZ 0x000a0cf0
MOV EBX,dword ptr [ESP + 0x8]
JMP 0x000a05b4
MOV EAX,dword ptr [EBX + 0x34]
TEST EAX,EAX
JNZ 0x000a13e6
MOV EAX,dword ptr [EBX + 0x1c]
CMP dword ptr [EAX],ESI
JLE 0x000a01d9
MOV EDX,ESI
SHL EDX,0x4
MOV EDX,dword ptr [EAX + EDX*0x1 + 0x4]
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0004f300
TEST EAX,EAX
JNZ 0x000a01b2
JMP 0x000a01d9
SUB ESP,0xc
MOV EDX,0xc
PUSH dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ESP + 0x4c]
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,EBX
CALL 0x00049630
MOV dword ptr [ESP + 0x3c],EAX
MOV EDX,0xe
POP EAX
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
POP EAX
PUSH dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x1c]
XOR ECX,ECX
MOV EDX,0xb
CALL 0x00049630
POP EAX
PUSH dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,EBX
MOV EDX,0xc
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x4c],EAX
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0xe
MOV dword ptr [ESP],ESI
CALL 0x00049630
POP EAX
PUSH dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x1c]
XOR ECX,ECX
MOV EDX,0xb
CALL 0x00049630
ADD ESP,0x10
MOV dword ptr [ESP + 0x34],EBX
CMP dword ptr [ESP + 0x1c],0x85
JZ 0x000a0a87
SUB ESP,0xc
MOV EDX,0xe
PUSH ESI
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,ESI
CALL 0x00049630
MOV dword ptr [ESP + 0x44],EAX
XOR ECX,ECX
MOV EDX,0xb
POP EAX
PUSH dword ptr [ESP + 0x44]
MOV EAX,ESI
CALL 0x00049630
ADD ESP,0x10
JMP 0x000a0a87
SUB ESP,0xc
MOV EDX,0xc
PUSH dword ptr [ESP + 0x60]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x68]
MOV EAX,EBX
CALL 0x00049630
MOV ESI,EAX
MOV EDX,0xe
POP EAX
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,EBX
CALL 0x00049630
XOR ECX,ECX
MOV dword ptr [ESP + 0x58],EAX
MOV EDX,0xb
MOV EAX,EBX
MOV dword ptr [ESP],ESI
CALL 0x00049630
MOV EAX,dword ptr [ESP + 0x24]
MOVSX EDX,word ptr [EAX + 0x2]
MOVSX EAX,word ptr [EDI + 0x2]
CALL 0x00024680
ADD ESP,0x10
MOV word ptr [EDI + 0x2],AX
JMP 0x000a0a10
MOV EAX,dword ptr [ESP + 0x18]
MOVZX EAX,byte ptr [EAX + 0x4d]
JMP 0x000a007d
CMP byte ptr [ESP + 0x68],0x1
JNZ 0x000a12cf
MOV EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0xa4],EAX
MOV EAX,dword ptr [ESP + 0x8]
LEA ECX,[ESP + 0xa0]
MOV EDX,ESI
MOV byte ptr [ESP + 0xa0],0x1
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xac],0x0
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ESP + 0x34],ECX
CALL 0x0008d250
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JNZ 0x000a0696
MOVZX EDX,byte ptr [EDI]
MOV EAX,dword ptr [EDI + 0x3c]
MOV dword ptr [EDI + 0x34],0x0
MOV dword ptr [EDI + 0x3c],0x0
MOV dword ptr [ESP + 0x20],EAX
CMP DL,0x86
JZ 0x000a1771
CMP DL,0x85
MOV byte ptr [ESP + 0xa0],0x1
LEA EAX,[EBP + 0xfffcbc20]
JZ 0x000a0f67
CMP DL,0x87
LEA EAX,[EBP + 0xfffcbc2a]
LEA EDX,[EBP + 0xfffcbc3b]
CMOVNZ EAX,EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcc216]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
MOV ECX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x0008d250
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDI + 0x34]
MOV dword ptr [EDI + 0x30],0x0
MOV dword ptr [EDI + 0x34],ESI
MOV dword ptr [ESP + 0x2c],EAX
ADD ESP,0x10
CMP byte ptr [EDI],0x84
JNZ 0x000a0fb7
MOVSX EDX,word ptr [ESI + 0x2]
MOVSX EAX,word ptr [EDI + 0x2]
CALL 0x00024680
MOV word ptr [EDI + 0x2],AX
MOV EDX,dword ptr [EDI + 0x3c]
TEST EDX,EDX
JZ 0x000a0fc7
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00053f30
CMP byte ptr [ESP + 0x68],0x1
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EDI + 0x8],0x0
MOV dword ptr [EDI + 0xc],0x0
MOV dword ptr [EDI + 0x3c],EAX
JZ 0x000a0ff8
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + 0x4d],0x0
JZ 0x000a1824
LEA ESI,[ESI]
MOV EAX,dword ptr [EDI + 0x38]
TEST EAX,EAX
JZ 0x000a14aa
MOV EAX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EAX + 0x24]
TEST ESI,ESI
JNZ 0x000a028c
JMP 0x000a0282
MOV EAX,dword ptr [EDI + 0x8]
MOV EDX,ESI
MOV dword ptr [ESI + 0x8],EAX
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESI + 0xc],EAX
MOV EAX,dword ptr [EDI + 0x3c]
MOV dword ptr [ESI + 0x3c],EAX
LEA EAX,[ESP + 0x68]
MOV dword ptr [ESP + 0x1c],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0008d250
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [EDI + 0x3c],0x0
JNZ 0x000a0696
MOV ECX,dword ptr [ESI + 0x8]
MOV EAX,dword ptr [ESI + 0xc]
MOV dword ptr [EDI + 0x34],0x0
TEST ECX,ECX
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [EDI + 0x8],ECX
MOV dword ptr [EDI + 0xc],EAX
JNZ 0x000a1728
LEA EAX,[EBP + 0xfffcbc20]
SUB ESP,0x4
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x0008d250
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDI + 0x34]
MOVSX EDX,word ptr [ESI + 0x2]
MOV dword ptr [EDI + 0x34],ESI
MOV dword ptr [ESP + 0x2c],EAX
MOVSX EAX,word ptr [EDI + 0x2]
CALL 0x00024680
MOV word ptr [EDI + 0x2],AX
MOV EAX,dword ptr [ESI + 0x3c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a1143
MOV EAX,dword ptr [EAX + 0xc]
LEA EDX,[ESP + 0xa0]
CALL 0x00025130
TEST EAX,EAX
JZ 0x000a1143
MOV ESI,dword ptr [ESP + 0xa0]
TEST ESI,ESI
JLE 0x000a1143
MOVZX EAX,word ptr [EDI + 0x2]
MOV dword ptr [ESP + 0x20],ESI
MOV word ptr [ESP + 0x28],AX
MOV EAX,ESI
CDQ
CMP ESI,0x7
MOV dword ptr [ESP + 0x24],EDX
JG 0x000a1c15
SUB ESI,0x1
JZ 0x000a1d00
MOV ECX,0x28
SHLD EDX,EAX,0x1
MOV ESI,ECX
ADD EAX,EAX
SUB ECX,0xa
CMP EDX,0x0
JBE 0x000a1c07
LEA ECX,[EBP + 0xfffd27cc]
AND EAX,0x7
MOVZX EAX,word ptr [ECX + EAX*0x2]
MOV dword ptr [ESP + 0x2c],ECX
LEA EAX,[ESI + EAX*0x1 + -0x14]
CMP word ptr [ESP + 0x28],AX
JG 0x000a1d10
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
JZ 0x000a0ff8
MOV ESI,dword ptr [ESP + 0x14]
TEST ECX,ECX
MOV EDX,dword ptr [ESI + 0x68]
LEA EAX,[EDX + -0x1]
CMOVNS EAX,ECX
MOV ECX,dword ptr [ESI]
MOV dword ptr [ESP + 0x18],EAX
LEA EAX,[EBP + 0x15d0]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x000a1178
IMUL EAX,dword ptr [ESP + 0x18],0x14
ADD EAX,dword ptr [ESI + 0x64]
MOV dword ptr [EAX + 0x8],EDX
JMP 0x000a0ff8
LEA EAX,[ESP + 0xa0]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,ECX
JMP 0x000a00ab
MOV EDI,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x3c]
JMP 0x000a06c0
MOV EAX,dword ptr [EDI + 0x1c]
MOV ECX,0x1
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,ESI
MOV dword ptr [ESP + 0x18],ESI
CALL 0x0002fcc0
TEST EAX,EAX
MOV dword ptr [ESP + 0x20],EAX
JZ 0x000a170b
ADD EAX,0x14
TEST ESI,ESI
JLE 0x000a1a01
LEA ECX,[EDI + 0x1c]
MOV dword ptr [ESP + 0x2c],EBX
XOR ESI,ESI
MOV EBX,EAX
MOV dword ptr [ESP + 0x28],ECX
JMP 0x000a11ed
ADD ESI,0x1
CMP dword ptr [ESP + 0x18],ESI
JZ 0x000a1409
SUB ESP,0xc
MOV ECX,dword ptr [EDI + 0x34]
PUSH ESI
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0004ff90
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [EBX + ESI*0x4],EAX
JNZ 0x000a11e0
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [EBX + ESI*0x4],EAX
JMP 0x000a11e0
MOV EAX,dword ptr [ESI + 0xc]
MOV EDX,ESI
CALL 0x00023410
JMP 0x000a09f6
MOV dword ptr [ESP + 0xc],EDI
MOV dword ptr [ESP + 0x10],0x1
LEA EAX,[EBP + 0xfffcc590]
JMP 0x000a0caf
SUB ESP,0xc
MOV EDX,0xc
PUSH dword ptr [ESP + 0x60]
MOV ECX,dword ptr [ESP + 0x68]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
ADD ESP,0x10
JMP 0x000a0a99
SUB ESP,0x4
MOV ECX,ESI
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x54]
PUSH dword ptr [ESP + 0x68]
PUSH EBX
LEA EAX,[ESP + 0xc8]
PUSH EAX
LEA EAX,[ESP + 0xc8]
PUSH EAX
MOV EDX,dword ptr [ESP + 0x7c]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000684f0
MOV dword ptr [ESP + 0x74],EAX
ADD ESP,0x20
JMP 0x000a09db
LEA EAX,[EBP + 0xfffcc1f4]
SUB ESP,0x4
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
LEA EAX,[EBP + 0xfffcc203]
ADD ESP,0xc
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
ADD ESP,0x10
JMP 0x000a05db
MOV EDX,dword ptr [ESP + 0x8]
SUB ESP,0xc
MOV ECX,dword ptr [EDX + 0x28]
LEA EAX,[ECX + 0x1]
MOV dword ptr [ESP + 0x24],ECX
MOV dword ptr [EDX + 0x28],EAX
PUSH 0x0
MOV EDX,0x64
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
ADD ESP,0x10
MOV dword ptr [EDI + 0x14],EAX
MOV EDX,EDI
JMP 0x000a1302
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x38]
TEST EAX,EAX
JNZ 0x000a1300
OR dword ptr [EDX + 0x4],0x20
MOV EAX,dword ptr [ESP + 0x18]
JMP 0x000a0ec4
MOV ECX,dword ptr [EAX + 0x30]
TEST ECX,ECX
JZ 0x000a0701
MOV ESI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESI]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a0701
CMP byte ptr [ESI + 0xcc],0x1
JA 0x000a0701
MOV EAX,dword ptr [EAX + 0x70]
CMP dword ptr [ECX],EAX
JG 0x000a1cc4
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0xc
LEA EDX,[EAX + 0x1c]
LEA EAX,[EBP + 0xfffcbc41]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0005e800
ADD ESP,0x10
JMP 0x000a0701
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDX + 0x2c]
LEA ESI,[EAX + 0x1]
ADD EAX,0x2
MOV dword ptr [ESP + 0x4c],EAX
MOV dword ptr [EDX + 0x2c],EAX
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x40],ESI
LEA EDX,[EAX + 0x1]
TEST EAX,EAX
CMOVNZ ECX,EDX
SUB ESP,0xc
MOV EDX,0x4d
PUSH ESI
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00049630
POP EAX
PUSH dword ptr [ESP + 0x58]
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,ESI
MOV EDX,0x4d
CALL 0x00049630
ADD ESP,0x10
JMP 0x000a0735
MOV EAX,dword ptr [EAX + 0x70]
CMP dword ptr [ECX],EAX
JG 0x000a1784
LEA EAX,[EBP + 0xfffcbc41]
SUB ESP,0xc
LEA EDX,[EDI + 0x1c]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0005e800
ADD ESP,0x10
JMP 0x000a06f2
SUB ESP,0xc
MOV ECX,dword ptr [EAX + 0x34]
LEA EDX,[EAX + 0x1c]
PUSH ESI
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0004ff90
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a01b2
JMP 0x000a0d33
MOV EBX,dword ptr [ESP + 0x2c]
MOV ESI,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x8],EBX
LEA ESI,[ESI]
XOR EBX,EBX
MOV EDX,dword ptr [EDI + EBX*0x4 + 0x14]
TEST EDX,EDX
JS 0x000a145f
MOV EAX,dword ptr [ESI]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a1490
MOV ECX,dword ptr [ESI + 0x64]
LEA EAX,[EDX + EDX*0x4]
LEA EAX,[ECX + EAX*0x4]
MOV ECX,dword ptr [ESP + 0x18]
MOV dword ptr [EAX + 0x8],ECX
MOV EAX,dword ptr [ESP + 0x20]
SUB ESP,0xc
ADD dword ptr [EAX],0x1
PUSH -0x9
MOV ECX,EAX
MOV EAX,ESI
CALL 0x000436c0
ADD ESP,0x10
CMP EBX,0x1
MOV dword ptr [EDI + EBX*0x4 + 0x14],0xffffffff
JNZ 0x000a14a0
MOV EDI,dword ptr [EDI + 0x34]
TEST EDI,EDI
JNZ 0x000a1418
MOV EDI,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x8],EAX
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [EDI],EAX
JNZ 0x000a028c
MOV EAX,dword ptr [EDI + 0xc]
MOV EDX,EDI
CALL 0x00023410
JMP 0x000a028c
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EBP + 0x15d8],EAX
JMP 0x000a143a
MOV EBX,0x1
JMP 0x000a141a
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ECX + 0xd8]
TEST EAX,EAX
JZ 0x000a14e0
MOV ESI,dword ptr [ECX + 0x8]
JNS 0x000a14c3
MOV EAX,dword ptr [ESI + 0x68]
SUB EAX,0x1
MOV ECX,dword ptr [ESI]
LEA EDX,[EBP + 0x15d0]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x000a14d9
IMUL EAX,EAX,0x14
ADD EAX,dword ptr [ESI + 0x64]
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x8]
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ECX + 0xd8],EAX
JMP 0x000a1003
MOV EAX,dword ptr [ESP + 0x18]
SUB ESP,0xc
MOV EDX,0x64
PUSH 0x0
ADD EAX,0x1
MOV dword ptr [ESP + 0x30],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
MOVZX EDX,byte ptr [EDI]
MOV ECX,dword ptr [EDI + 0x3c]
MOV dword ptr [EDI + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [EDI + 0x34],0x0
MOV dword ptr [EDI + 0x3c],0x0
MOV dword ptr [ESP + 0x38],ECX
MOV dword ptr [ESP + 0xb4],EAX
ADD ESP,0x10
CMP DL,0x86
LEA EAX,[EBP + 0xfffcbc34]
JZ 0x000a155c
CMP DL,0x87
LEA EAX,[EBP + 0xfffcbc2a]
JZ 0x000a155c
CMP DL,0x85
LEA EAX,[EBP + 0xfffcbc20]
LEA EDX,[EBP + 0xfffcbc3b]
CMOVNZ EAX,EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcc216]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
MOV ECX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x0008d250
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDI + 0x34]
MOV dword ptr [EDI + 0x34],ESI
MOV dword ptr [ESP + 0x2c],EAX
MOVZX EAX,word ptr [ESI + 0x2]
ADD ESP,0x10
CMP word ptr [EDI + 0x2],AX
JLE 0x000a159d
MOV word ptr [EDI + 0x2],AX
MOV EDX,dword ptr [EDI + 0x3c]
TEST EDX,EDX
JZ 0x000a15ad
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x00053f30
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EDI + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JNZ 0x000a0ff8
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ECX + 0x38]
LEA ESI,[EAX + -0x1]
LEA EDX,[EAX + -0x2]
MOV EAX,ECX
MOV dword ptr [ESP + 0x2c],EDX
MOV dword ptr [ECX + 0x38],EDX
MOV ECX,ESI
MOV EDX,EDI
MOV dword ptr [ESP + 0x28],ESI
MOV ESI,EAX
CALL 0x00094cf0
SUB ESP,0xc
MOV EDX,0x25
PUSH dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
MOVZX EAX,byte ptr [ESI + 0x13]
ADD ESP,0x10
TEST AL,AL
JNZ 0x000a1b2b
MOV ECX,dword ptr [ESI + 0x2c]
MOV EAX,ESI
LEA ESI,[ECX + 0x1]
MOV dword ptr [ESP + 0x30],ECX
MOV dword ptr [EAX + 0x2c],ESI
SUB ESP,0xc
MOV EDX,0x7e
PUSH ESI
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0xc
MOV EDX,0x1d
PUSH 0x0
PUSH ESI
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00068470
ADD ESP,0x10
TEST ESI,ESI
JZ 0x000a1664
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,ESI
CALL 0x000254e0
SUB ESP,0xc
MOV EDX,EDI
PUSH dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x3c]
PUSH ESI
LEA EAX,[ESP + 0x7c]
PUSH EAX
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000964a0
ADD ESP,0x20
MOV EDX,ESI
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,ESI
CALL 0x000330b0
SUB ESP,0xc
MOV EDX,0x5
MOV EAX,ESI
PUSH dword ptr [ESP + 0x3c]
MOV ECX,dword ptr [ESP + 0x28]
CALL 0x00049630
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,ESI
CALL 0x000330b0
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,0x74
MOV EAX,ESI
MOV dword ptr [ESP],0x0
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x28]
MOV EDX,0x74
MOV EAX,ESI
MOV dword ptr [ESP],0x0
CALL 0x00049630
ADD ESP,0x10
JMP 0x000a0ff8
AND DH,0x20
JZ 0x0009ff43
JMP 0x000a0251
MOV dword ptr [ESP + 0xc],0x7
JMP 0x0009fe71
MOV dword ptr [ESP + 0xc],0x7
JMP 0x000a028c
IMUL EAX,EAX,0x44
MOV EAX,dword ptr [ESI + EAX*0x1 + 0x30]
MOV dword ptr [ESP + 0x28],EAX
JMP 0x000a040d
SUB ESP,0xc
MOV EDX,0x14
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EDI + 0xc]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a1079
MOV ECX,dword ptr [EDI + 0x8]
PUSH EDX
PUSH EDX
PUSH EAX
ADD EAX,0x1
PUSH EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV EDX,0x98
CALL 0x000493f0
ADD ESP,0x10
JMP 0x000a1079
MOV byte ptr [ESP + 0xa0],0x2
LEA EAX,[EBP + 0xfffcbc34]
JMP 0x000a0f67
LEA EAX,[EBP + 0xfffcbc41]
PUSH ECX
PUSH EAX
LEA EAX,[EBP + 0xfffce3dc]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003d470
ADD ESP,0x10
JMP 0x000a06f2
CMP dword ptr [ESP + 0x2c],0x0
LEA EAX,[ESI + 0x2]
JZ 0x000a1b80
MOV ECX,dword ptr [ESP + 0x8]
MOV byte ptr [ESP + 0xa0],0x8
MOV dword ptr [ESP + 0xa4],ESI
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xac],0x0
MOV dword ptr [ECX + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ECX + 0x2c],EAX
PUSH EDX
PUSH EDX
PUSH dword ptr [ESP + 0x24]
MOV EDX,0x72
PUSH EAX
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000493f0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x20],EAX
JMP 0x000a049c
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
MOV ESI,dword ptr [EAX + 0x38]
LEA ECX,[ESI + -0x1]
SUB ESI,0x2
MOV dword ptr [EAX + 0x38],ESI
MOV dword ptr [ESP + 0x20],ECX
CALL 0x00094cf0
SUB ESP,0xc
MOV EDX,0x25
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ECX + 0x68]
MOV dword ptr [ESP + 0x38],EDX
MOV EDX,EDI
POP EAX
PUSH dword ptr [ESP + 0x2c]
PUSH ESI
LEA EAX,[ESP + 0x7c]
PUSH EAX
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000964a0
ADD ESP,0x20
MOV EDX,ESI
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,ESI
CALL 0x000330b0
SUB ESP,0xc
MOV EDX,0x5
MOV EAX,ESI
PUSH dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x28]
CALL 0x00049630
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,ESI
CALL 0x000330b0
JMP 0x000a16d1
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,0x25
PUSH dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x2c],EAX
MOV EDX,0x80
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP],0x0
CALL 0x00049630
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x2c]
TEST ECX,ECX
JZ 0x000a1b0c
PUSH EAX
PUSH EAX
MOV EDX,0x59
PUSH dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ECX]
LEA EAX,[ECX + 0x1]
MOV dword ptr [ESP + 0x2c],ECX
MOV ECX,ESI
PUSH EAX
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000493f0
ADD ESP,0x10
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,0x7a
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [ECX + 0x38]
MOV dword ptr [ESP + 0x30],ESI
SUB ESI,0x1
ADD ESP,0x10
MOV dword ptr [ECX + 0x38],ESI
MOV ECX,dword ptr [ESP + 0x44]
TEST ECX,ECX
JLE 0x000a1965
PUSH EAX
PUSH EAX
MOV EDX,0x30
PUSH 0x1
PUSH ESI
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000493f0
ADD ESP,0x10
SUB ESP,0xc
MOV EDX,EDI
PUSH dword ptr [ESP + 0x44]
PUSH ESI
LEA EAX,[ESP + 0x7c]
PUSH EAX
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000964a0
ADD ESP,0x20
CMP dword ptr [ESP + 0x40],0x0
JZ 0x000a19ab
SUB ESP,0xc
MOV EDX,0x3b
PUSH dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,ESI
CALL 0x000330b0
TEST byte ptr [EDI + 0x4],0x8
JZ 0x000a1b44
PUSH EAX
PUSH EAX
LEA EAX,[EBP + 0xfffceb74]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003d470
ADD ESP,0x10
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
PUSH dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESP + 0x28]
MOV EAX,ESI
CALL 0x00049630
MOV EDX,dword ptr [ESP + 0x48]
MOV EAX,ESI
CALL 0x000330b0
ADD ESP,0x10
JMP 0x000a056a
MOV ESI,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x8],EBX
JMP 0x000a1418
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,0x72
MOV byte ptr [ESP + 0xa0],0x5
MOV dword ptr [ESP + 0xa4],ESI
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xac],0x0
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [EAX + 0x2c],ECX
PUSH EAX
PUSH EAX
PUSH dword ptr [ESP + 0x24]
PUSH ECX
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000493f0
POP EAX
PUSH dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,0x64
MOV ECX,ESI
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x1c]
LEA EAX,[EBP + 0xfffcc1c9]
ADD ESP,0xc
MOV dword ptr [EDI + 0x30],0x0
MOV dword ptr [ECX + 0x38],0x0
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x000496a0
LEA EDX,[ESP + 0xb0]
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x44],EDX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x0008d250
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ECX + 0x38],EDI
JNZ 0x000a056a
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,0x25
PUSH dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
MOV ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x2c],EAX
MOV EDX,0x80
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP],0x0
CALL 0x00049630
ADD ESP,0x10
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,0x7e
PUSH dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00049630
ADD ESP,0x10
JMP 0x000a191e
MOV ECX,dword ptr [ESP + 0x8]
SUB EAX,0x1
MOV byte ptr [ECX + 0x13],AL
MOVZX EAX,AL
MOV ESI,dword ptr [ECX + EAX*0x4 + 0x98]
JMP 0x000a161c
MOV dword ptr [EDI + 0x34],0x0
PUSH EAX
LEA EAX,[EBP + 0xfffcc1cf]
PUSH EAX
PUSH 0x1
MOV ESI,dword ptr [ESP + 0x14]
PUSH ESI
CALL 0x000496a0
MOV ECX,dword ptr [ESP + 0x44]
MOV EDX,EDI
MOV EAX,ESI
CALL 0x0008d250
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EDI + 0x34],EAX
JMP 0x000a19d5
CALL 0x000d1450
MOV ECX,dword ptr [ESP + 0x8]
MOV byte ptr [ESP + 0xa0],0x6
MOV EDX,0x72
MOV dword ptr [ESP + 0xa4],ESI
MOV dword ptr [ESP + 0xa8],0x0
MOV dword ptr [ESP + 0xb4],0x0
MOV dword ptr [ESP + 0xac],0x0
MOV dword ptr [ECX + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ECX + 0x2c],EAX
PUSH ECX
PUSH ECX
PUSH dword ptr [ESP + 0x24]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000493f0
POP EAX
PUSH dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,ESI
MOV EDX,0x64
CALL 0x00049630
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x20],EAX
JMP 0x000a04f4
CMP EAX,0x7
JBE 0x000a110f
JMP 0x000a1123
MOV EDX,dword ptr [ESP + 0x24]
TEST EDX,EDX
JZ 0x000a1ce4
BSR EAX,EDX
XOR EAX,0x1f
MOV EDX,0x3c
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x24]
SUB ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
SHRD EAX,EDX,CL
SHR EDX,CL
TEST CL,0x20
JZ 0x000a1c44
MOV EAX,EDX
MOV EDX,EAX
LEA EAX,[EBP + 0xfffd27cc]
AND EDX,0x7
MOV dword ptr [ESP + 0x2c],EAX
IMUL EAX,ECX,0xa
MOV ECX,dword ptr [ESP + 0x2c]
MOVZX EDX,word ptr [ECX + EDX*0x2]
LEA EAX,[EAX + EDX*0x1 + 0x1e]
CMP word ptr [ESP + 0x28],AX
JLE 0x000a1143
MOV EDX,dword ptr [ESP + 0x24]
TEST EDX,EDX
JZ 0x000a1cf2
BSR EAX,EDX
XOR EAX,0x1f
MOV EDX,0x3c
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x24]
SUB ECX,EAX
IMUL EAX,ECX,0xa
LEA ESI,[EAX + 0x28]
MOV EAX,dword ptr [ESP + 0x20]
SHRD EAX,EDX,CL
SHR EDX,CL
TEST CL,0x20
JZ 0x000a1ca0
MOV EAX,EDX
XOR EDX,EDX
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x2c]
AND EDX,0x7
MOVZX EDX,word ptr [EAX + EDX*0x2]
LEA EAX,[ESI + EDX*0x1 + -0xa]
MOV word ptr [EDI + 0x2],AX
JMP 0x000a1143
PUSH EAX
LEA EAX,[EBP + 0xfffcbc41]
PUSH EAX
LEA EAX,[EBP + 0xfffce3dc]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003d470
ADD ESP,0x10
JMP 0x000a0701
BSR EAX,ESI
XOR EAX,0x1f
ADD EAX,0x20
JMP 0x000a1c27
BSR EAX,ESI
XOR EAX,0x1f
ADD EAX,0x20
JMP 0x000a1c7b
CMP word ptr [ESP + 0x28],0x0
JLE 0x000a1143
XOR EAX,EAX
JMP 0x000a1cbb
MOV EDX,EBX
MOV ECX,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x24]
MOV ESI,0x28
MOV EAX,ESI
SUB EAX,0xa
ADD ECX,ECX
ADC EBX,EBX
CMP EBX,0x0
JA 0x000a1d32
CMP ECX,0x7
JBE 0x000a1d21
MOV dword ptr [ESP + 0x24],EBX
MOV dword ptr [ESP + 0x20],ECX
MOV ESI,EAX
MOV EBX,EDX
JMP 0x000a1ca8
(translation_unit "uint __regparm3 FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000d1450();\n}\n\n" (function_definition "uint __regparm3 FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000d1450();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,byte *param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000d1450();\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "short sVar5;" (sized_type_specifier "short" short) identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "short sVar9;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "short sVar24;" (sized_type_specifier "short" short) identifier ;) (declaration "char *pcVar25;" primitive_type (pointer_declarator "*pcVar25" * identifier) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar30;" primitive_type identifier ;) (declaration "undefined8 uVar31;" type_identifier identifier ;) (declaration "byte *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "int *local_cc;" primitive_type (pointer_declarator "*local_cc" * identifier) ;) (declaration "int *local_c8;" primitive_type (pointer_declarator "*local_c8" * identifier) ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "int *local_b0;" primitive_type (pointer_declarator "*local_b0" * identifier) ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined1 local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x9fdad;" (assignment_expression "uStack_14 = 0x9fdad" identifier = number_literal) ;) (expression_statement "uVar31 = FUN_000d0ab3();" (assignment_expression "uVar31 = FUN_000d0ab3()" identifier = (call_expression "FUN_000d0ab3()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);" (assignment_expression "pcVar25 = (char *)((ulonglong)uVar31 >> 0x20)" identifier = (cast_expression "(char *)((ulonglong)uVar31 >> 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar31 >> 0x20)" ( (binary_expression "(ulonglong)uVar31 >> 0x20" (cast_expression "(ulonglong)uVar31" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar20 = (int *)uVar31;" (assignment_expression "piVar20 = (int *)uVar31" identifier = (cast_expression "(int *)uVar31" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar19 = *(int *)(pcVar25 + 0x34);" (assignment_expression "iVar19 = *(int *)(pcVar25 + 0x34)" identifier = (pointer_expression "*(int *)(pcVar25 + 0x34)" * (cast_expression "(int *)(pcVar25 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar25 + 0x34)" ( (binary_expression "pcVar25 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *piVar20;" (assignment_expression "iVar15 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_74 = *param_3;" (assignment_expression "local_74 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "local_70 = param_3[1];" (assignment_expression "local_70 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "local_6c = param_3[2];" (assignment_expression "local_6c = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "local_68 = param_3[3];" (assignment_expression "local_68 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "local_64 = param_3[4];" (assignment_expression "local_64 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "local_60 = param_3[5];" (assignment_expression "local_60 = param_3[5]" identifier = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_3[6];" (assignment_expression "local_5c = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" if (parenthesized_expression "(*(int *)(iVar19 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x30) == 0" (pointer_expression "*(int *)(iVar19 + 0x30)" * (cast_expression "(int *)(iVar19 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x30)" ( (binary_expression "iVar19 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }" { (if_statement "if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }" if (parenthesized_expression "(*(int *)(iVar19 + 0x3c) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x3c) == 0" (pointer_expression "*(int *)(iVar19 + 0x3c)" * (cast_expression "(int *)(iVar19 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x3c)" ( (binary_expression "iVar19 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }" { (expression_statement "local_c8 = (int *)piVar20[2];" (assignment_expression "local_c8 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (if_statement "if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }" if (parenthesized_expression "(local_c8 == (int *)0x0)" ( (binary_expression "local_c8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_c8 = (int *)FUN_00049b90();\n      }" { (expression_statement "local_c8 = (int *)FUN_00049b90();" (assignment_expression "local_c8 = (int *)FUN_00049b90()" identifier = (cast_expression "(int *)FUN_00049b90()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00049b90()" identifier (argument_list "()" ( ))))) ;) })) (if_statement "if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" if (parenthesized_expression "((char)local_74 == '\f')" ( (binary_expression "(char)local_74 == '\f'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\f'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" { (expression_statement "FUN_00049630(**(undefined4 **)(param_2 + 0x1c));" (call_expression "FUN_00049630(**(undefined4 **)(param_2 + 0x1c))" identifier (argument_list "(**(undefined4 **)(param_2 + 0x1c))" ( (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" * (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" * (cast_expression "(undefined4 **)(param_2 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ))) ;) (expression_statement "local_74 = CONCAT31(local_74._1_3_,0xe);" (assignment_expression "local_74 = CONCAT31(local_74._1_3_,0xe)" identifier = (call_expression "CONCAT31(local_74._1_3_,0xe)" identifier (argument_list "(local_74._1_3_,0xe)" ( (field_expression "local_74._1_3_" identifier . field_identifier) , number_literal )))) ;) })) (expression_statement "uVar12 = *(uint *)(param_2 + 4);" (assignment_expression "uVar12 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" if (parenthesized_expression "((uVar12 & 0x400) == 0)" ( (binary_expression "(uVar12 & 0x400) == 0" (parenthesized_expression "(uVar12 & 0x400)" ( (binary_expression "uVar12 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }" { (if_statement "if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }" if (parenthesized_expression "((uVar12 & 0x2000) == 0)" ( (binary_expression "(uVar12 & 0x2000) == 0" (parenthesized_expression "(uVar12 & 0x2000)" ( (binary_expression "uVar12 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }" { (labeled_statement "LAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);" statement_identifier : (expression_statement "local_b0 = *(int **)(param_2 + 0x30);" (assignment_expression "local_b0 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;)) (if_statement "if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }" if (parenthesized_expression "(local_b0 != (int *)0x0)" ( (binary_expression "local_b0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }" { (expression_statement "iVar15 = *piVar20;" (assignment_expression "iVar15 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar11 = piVar20[0xe] + -2;" (assignment_expression "iVar11 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar11;" (assignment_expression "piVar20[0xe] = iVar11" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar12 = (uint)*param_2;" (assignment_expression "uVar12 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar29 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar29 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar21 = *local_b0;" (assignment_expression "iVar21 = *local_b0" identifier = (pointer_expression "*local_b0" * identifier)) ;) (if_statement "if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }" if (parenthesized_expression "(((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc))" ( (binary_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)" (parenthesized_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0'))" ( (binary_expression "(uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')" (parenthesized_expression "(uVar12 != 0x85)" ( (binary_expression "uVar12 != 0x85" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(iVar15 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar15 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)" ( (comma_expression "local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc" (assignment_expression "local_cc = *(int **)(param_2 + 0x1c)" identifier = (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) , (binary_expression "0 < *local_cc" number_literal < (pointer_expression "*local_cc" * identifier))) ))) )) (compound_statement "{\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }" { (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;) (do_statement "do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);" do (compound_statement "{\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              }" { (if_statement "if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" if (parenthesized_expression "(iVar21 < 1)" ( (binary_expression "iVar21 < 1" identifier < number_literal) )) (compound_statement "{\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }" { (if_statement "if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }" { (labeled_statement "LAB_000a000e:\n                    local_3c = 0;" statement_identifier : (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;)) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = FUN_0002fd80();" (assignment_expression "iVar13 = FUN_0002fd80()" identifier = (call_expression "FUN_0002fd80()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }" { (expression_statement "local_d0 = (byte *)0x7;" (assignment_expression "local_d0 = (byte *)0x7" identifier = (cast_expression "(byte *)0x7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "*(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;" (assignment_expression "*(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400" (pointer_expression "*(uint *)(iVar13 + 4)" * (cast_expression "(uint *)(iVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 4)" ( (binary_expression "iVar13 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar13 + 4) | 0x400" (pointer_expression "*(uint *)(iVar13 + 4)" * (cast_expression "(uint *)(iVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 4)" ( (binary_expression "iVar13 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(uint *)(iVar13 + 8) = uVar27;" (assignment_expression "*(uint *)(iVar13 + 8) = uVar27" (pointer_expression "*(uint *)(iVar13 + 8)" * (cast_expression "(uint *)(iVar13 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_b0 = (int *)FUN_00054ef0();" (assignment_expression "local_b0 = (int *)FUN_00054ef0()" identifier = (cast_expression "(int *)FUN_00054ef0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00054ef0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(int **)(param_2 + 0x30) = local_b0;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" if (parenthesized_expression "(local_b0 == (int *)0x0)" ( (binary_expression "local_b0 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }" { (expression_statement "cVar6 = *(char *)(iVar15 + 0x4d);" (assignment_expression "cVar6 = *(char *)(iVar15 + 0x4d)" identifier = (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" else (compound_statement "{\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" { (expression_statement "*(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;" (assignment_expression "*(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27" (pointer_expression "*(short *)(local_b0 + iVar21 * 4 + 4)" * (cast_expression "(short *)(local_b0 + iVar21 * 4 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + iVar21 * 4 + 4)" ( (binary_expression "local_b0 + iVar21 * 4 + 4" (binary_expression "local_b0 + iVar21 * 4" identifier + (binary_expression "iVar21 * 4" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "cVar6 = *(char *)(iVar15 + 0x4d);" (assignment_expression "cVar6 = *(char *)(iVar15 + 0x4d)" identifier = (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) ))))) ;) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) }))) (if_statement "if (cVar6 != '\0') break;" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "local_cc = *(int **)(param_2 + 0x1c);" (assignment_expression "local_cc = *(int **)(param_2 + 0x1c)" identifier = (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) })) }) (else_clause "else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" else (if_statement "if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" if (parenthesized_expression "(*(ushort *)(local_b0 + 4) != uVar27)" ( (binary_expression "*(ushort *)(local_b0 + 4) != uVar27" (pointer_expression "*(ushort *)(local_b0 + 4)" * (cast_expression "(ushort *)(local_b0 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 4)" ( (binary_expression "local_b0 + 4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = local_b0 + 1;" (assignment_expression "piVar14 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) (do_statement "do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);" do (compound_statement "{\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (iVar13 == iVar21) goto LAB_000a000e;" if (parenthesized_expression "(iVar13 == iVar21)" ( (binary_expression "iVar13 == iVar21" identifier == identifier) )) (goto_statement "goto LAB_000a000e;" goto statement_identifier ;)) (expression_statement "puVar1 = (ushort *)(piVar14 + 7);" (assignment_expression "puVar1 = (ushort *)(piVar14 + 7)" identifier = (cast_expression "(ushort *)(piVar14 + 7)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar14 + 7)" ( (binary_expression "piVar14 + 7" identifier + number_literal) )))) ;) (expression_statement "piVar14 = piVar14 + 4;" (assignment_expression "piVar14 = piVar14 + 4" identifier = (binary_expression "piVar14 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 != uVar27)" ( (binary_expression "*puVar1 != uVar27" (pointer_expression "*puVar1" * identifier) != identifier) )) ;) })))) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar27 <= *local_cc)" ( (binary_expression "(int)uVar27 <= *local_cc" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*local_cc" * identifier)) )) ;) })) (expression_statement "piVar14 = (int *)FUN_0002ef70();" (assignment_expression "piVar14 = (int *)FUN_0002ef70()" identifier = (cast_expression "(int *)FUN_0002ef70()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ef70()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }" { (expression_statement "*piVar14 = iVar21;" (assignment_expression "*piVar14 = iVar21" (pointer_expression "*piVar14" * identifier) = identifier) ;) (if_statement "if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }" if (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) (compound_statement "{\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);" do (compound_statement "{\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                }" { (expression_statement "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;" (assignment_expression "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1" (pointer_expression "*(uint *)((int)piVar14 + iVar15 + 4)" * (cast_expression "(uint *)((int)piVar14 + iVar15 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar14 + iVar15 + 4)" ( (binary_expression "(int)piVar14 + iVar15 + 4" (binary_expression "(int)piVar14 + iVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (binary_expression "*(ushort *)(local_b0 + iVar15 + 4) - 1" (pointer_expression "*(ushort *)(local_b0 + iVar15 + 4)" * (cast_expression "(ushort *)(local_b0 + iVar15 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + iVar15 + 4)" ( (binary_expression "local_b0 + iVar15 + 4" (binary_expression "local_b0 + iVar15" identifier + identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "iVar15 = iVar15 + 4;" (assignment_expression "iVar15 = iVar15 + 4" identifier = (binary_expression "iVar15 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 * 4 != iVar15)" ( (binary_expression "iVar21 * 4 != iVar15" (binary_expression "iVar21 * 4" identifier * number_literal) != identifier) )) ;) })) (expression_statement "FUN_00050020();" (call_expression "FUN_00050020()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int **)(param_2 + 0x30) = local_b0;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = FUN_0005f2e0();" (assignment_expression "uVar16 = FUN_0005f2e0()" identifier = (call_expression "FUN_0005f2e0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar29 + 0x30) = uVar16;" (assignment_expression "*(undefined4 *)(iVar29 + 0x30) = uVar16" (pointer_expression "*(undefined4 *)(iVar29 + 0x30)" * (cast_expression "(undefined4 *)(iVar29 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x30)" ( (binary_expression "iVar29 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" if (parenthesized_expression "(uVar12 == 0x85)" ( (binary_expression "uVar12 == 0x85" identifier == number_literal) )) (compound_statement "{\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }" { (expression_statement "local_b0 = (int *)0x0;" (assignment_expression "local_b0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" else (compound_statement "{\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" { (expression_statement "iVar15 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar15 = **(int **)(param_2 + 0x1c)" identifier = (pointer_expression "**(int **)(param_2 + 0x1c)" * (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "local_94 = piVar20[0xb] + 1;" (assignment_expression "local_94 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = iVar15 + 1 + piVar20[0xb];" (assignment_expression "piVar20[0xb] = iVar15 + 1 + piVar20[0xb]" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = (binary_expression "iVar15 + 1 + piVar20[0xb]" (binary_expression "iVar15 + 1" identifier + number_literal) + (subscript_expression "piVar20[0xb]" identifier [ number_literal ]))) ;) (expression_statement "FUN_00049630(local_94);" (call_expression "FUN_00049630(local_94)" identifier (argument_list "(local_94)" ( identifier ))) ;) (expression_statement "local_b0 = (int *)FUN_0002fcc0();" (assignment_expression "local_b0 = (int *)FUN_0002fcc0()" identifier = (cast_expression "(int *)FUN_0002fcc0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002fcc0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" if (parenthesized_expression "((local_b0 != (int *)0x0) && (0 < iVar15))" ( (binary_expression "(local_b0 != (int *)0x0) && (0 < iVar15)" (parenthesized_expression "(local_b0 != (int *)0x0)" ( (binary_expression "local_b0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(0 < iVar15)" ( (binary_expression "0 < iVar15" number_literal < identifier) ))) )) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);" do (compound_statement "{\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "iVar18 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar18 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }" if (parenthesized_expression "((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))))))" ( (binary_expression "(iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))" (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) || (parenthesized_expression "(((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))" ( (parenthesized_expression "((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))))" ( (binary_expression "(*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))" (parenthesized_expression "(*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       )" ( (binary_expression "*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)" (binary_expression "*(int *)(iVar18 + 0x34) == 0" (pointer_expression "*(int *)(iVar18 + 0x34)" * (cast_expression "(int *)(iVar18 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x34)" ( (binary_expression "iVar18 + 0x34" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)" ( (comma_expression "iVar17 = FUN_0004ff90(iVar13), iVar17 == 0" (assignment_expression "iVar17 = FUN_0004ff90(iVar13)" identifier = (call_expression "FUN_0004ff90(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) , (binary_expression "iVar17 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))" ( (parenthesized_expression "(**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))" ( (binary_expression "**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)" (binary_expression "**(int **)(iVar18 + 0x1c) <= iVar13" (pointer_expression "**(int **)(iVar18 + 0x1c)" * (pointer_expression "*(int **)(iVar18 + 0x1c)" * (cast_expression "(int **)(iVar18 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + 0x1c)" ( (binary_expression "iVar18 + 0x1c" identifier + number_literal) ))))) <= identifier) || (parenthesized_expression "(iVar17 = FUN_0004f300(), iVar17 == 0)" ( (comma_expression "iVar17 = FUN_0004f300(), iVar17 == 0" (assignment_expression "iVar17 = FUN_0004f300()" identifier = (call_expression "FUN_0004f300()" identifier (argument_list "()" ( )))) , (binary_expression "iVar17 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) (compound_statement "{\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }" { (if_statement "if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }" if (parenthesized_expression "(iVar13 < **(int **)(param_2 + 0x1c))" ( (binary_expression "iVar13 < **(int **)(param_2 + 0x1c)" identifier < (pointer_expression "**(int **)(param_2 + 0x1c)" * (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) )) (compound_statement "{\n                      iVar17 = FUN_0004f300();\n                    }" { (expression_statement "iVar17 = FUN_0004f300();" (assignment_expression "iVar17 = FUN_0004f300()" identifier = (call_expression "FUN_0004f300()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                      iVar17 = 0;\n                    }" else (compound_statement "{\n                      iVar17 = 0;\n                    }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }))) })) (expression_statement "local_b0[iVar13 + 5] = iVar17;" (assignment_expression "local_b0[iVar13 + 5] = iVar17" (subscript_expression "local_b0[iVar13 + 5]" identifier [ (binary_expression "iVar13 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)(local_b0[4] + iVar13) = 0;" (assignment_expression "*(undefined1 *)(local_b0[4] + iVar13) = 0" (pointer_expression "*(undefined1 *)(local_b0[4] + iVar13)" * (cast_expression "(undefined1 *)(local_b0[4] + iVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[4] + iVar13)" ( (binary_expression "local_b0[4] + iVar13" (subscript_expression "local_b0[4]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != iVar13)" ( (binary_expression "iVar15 != iVar13" identifier != identifier) )) ;) })) }))) (expression_statement "piVar14 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar14 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar29 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar29 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar29 + 0x38)" * (cast_expression "(undefined4 *)(iVar29 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x38)" ( (binary_expression "iVar29 + 0x38" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" if (parenthesized_expression "(((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2))" ( (binary_expression "((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)" (parenthesized_expression "((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0'))" ( (binary_expression "(piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')" (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" * (cast_expression "(char *)(*piVar20 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x4d)" ( (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(byte *)(piVar20 + 0x33) < 2)" ( (binary_expression "*(byte *)(piVar20 + 0x33) < 2" (pointer_expression "*(byte *)(piVar20 + 0x33)" * (cast_expression "(byte *)(piVar20 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20 + 0x33)" ( (binary_expression "piVar20 + 0x33" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" { (if_statement "if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" if (parenthesized_expression "(*(int *)(*piVar20 + 0x70) < *piVar14)" ( (binary_expression "*(int *)(*piVar20 + 0x70) < *piVar14" (pointer_expression "*(int *)(*piVar20 + 0x70)" * (cast_expression "(int *)(*piVar20 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x70)" ( (binary_expression "*piVar20 + 0x70" (pointer_expression "*piVar20" * identifier) + number_literal) )))) < (pointer_expression "*piVar14" * identifier)) )) (compound_statement "{\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }" { (expression_statement "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);" (call_expression "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14)" identifier (argument_list "(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14)" ( identifier , (binary_expression "unaff_EBP + 0x3462f" identifier + number_literal) , (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) , identifier ))) ;) }) (else_clause "else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" else (compound_statement "{\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" { (expression_statement "FUN_0005e800(unaff_EBP + 0x31e94);" (call_expression "FUN_0005e800(unaff_EBP + 0x31e94)" identifier (argument_list "(unaff_EBP + 0x31e94)" ( (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) ))) ;) }))) })) (if_statement "if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" if (parenthesized_expression "(((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2))))" ( (binary_expression "((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))" (parenthesized_expression "((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0))" ( (binary_expression "(*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)" (parenthesized_expression "(*(int *)(iVar29 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar29 + 0x34) == 0" (pointer_expression "*(int *)(iVar29 + 0x34)" * (cast_expression "(int *)(iVar29 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x34)" ( (binary_expression "iVar29 + 0x34" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int **)(iVar29 + 0x30) != (int *)0x0)" ( (binary_expression "*(int **)(iVar29 + 0x30) != (int *)0x0" (pointer_expression "*(int **)(iVar29 + 0x30)" * (cast_expression "(int **)(iVar29 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar29 + 0x30)" ( (binary_expression "iVar29 + 0x30" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))" ( (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2))" ( (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)" (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" * (cast_expression "(char *)(*piVar20 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x4d)" ( (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(*(byte *)(piVar20 + 0x33) < 2)" ( (binary_expression "*(byte *)(piVar20 + 0x33) < 2" (pointer_expression "*(byte *)(piVar20 + 0x33)" * (cast_expression "(byte *)(piVar20 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20 + 0x33)" ( (binary_expression "piVar20 + 0x33" identifier + number_literal) )))) < number_literal) ))) )) ))) )) (compound_statement "{\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" { (expression_statement "iVar15 = *(int *)(*piVar20 + 0x70);" (assignment_expression "iVar15 = *(int *)(*piVar20 + 0x70)" identifier = (pointer_expression "*(int *)(*piVar20 + 0x70)" * (cast_expression "(int *)(*piVar20 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x70)" ( (binary_expression "*piVar20 + 0x70" (pointer_expression "*piVar20" * identifier) + number_literal) ))))) ;) (if_statement "if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" if (parenthesized_expression "(iVar15 < **(int **)(iVar29 + 0x30))" ( (binary_expression "iVar15 < **(int **)(iVar29 + 0x30)" identifier < (pointer_expression "**(int **)(iVar29 + 0x30)" * (pointer_expression "*(int **)(iVar29 + 0x30)" * (cast_expression "(int **)(iVar29 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar29 + 0x30)" ( (binary_expression "iVar29 + 0x30" identifier + number_literal) )))))) )) (compound_statement "{\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }" { (expression_statement "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);" (call_expression "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15)" identifier (argument_list "(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15)" ( identifier , (binary_expression "unaff_EBP + 0x3462f" identifier + number_literal) , (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) , identifier ))) ;) }) (else_clause "else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" else (compound_statement "{\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" { (expression_statement "FUN_0005e800(unaff_EBP + 0x31e94);" (call_expression "FUN_0005e800(unaff_EBP + 0x31e94)" identifier (argument_list "(unaff_EBP + 0x31e94)" ( (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) ))) ;) }))) })) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }" if (parenthesized_expression "((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0))" ( (binary_expression "(uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)" (parenthesized_expression "(uVar12 == 0x85)" ( (binary_expression "uVar12 == 0x85" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(param_2 + 8) != 0)" ( (binary_expression "*(int *)(param_2 + 8) != 0" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }" { (expression_statement "local_9c = piVar20[0xb] + 1;" (assignment_expression "local_9c = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_90 = piVar20[0xb] + 2;" (assignment_expression "local_90 = piVar20[0xb] + 2" identifier = (binary_expression "piVar20[0xb] + 2" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = local_90;" (assignment_expression "piVar20[0xb] = local_90" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(local_9c);" (call_expression "FUN_00049630(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "FUN_00049630(local_90);" (call_expression "FUN_00049630(local_90)" identifier (argument_list "(local_90)" ( identifier ))) ;) }) (else_clause "else {\n              local_90 = 0;\n              local_9c = 0;\n            }" else (compound_statement "{\n              local_90 = 0;\n              local_9c = 0;\n            }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) }))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00053f30();\n            }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58 = 0xd;" (assignment_expression "local_58 = 0xd" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar15 = piVar20[0xb];" (assignment_expression "iVar15 = piVar20[0xb]" identifier = (subscript_expression "piVar20[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,0xd);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,0xd)" identifier = (call_expression "CONCAT31(local_3c._1_3_,0xd)" identifier (argument_list "(local_3c._1_3_,0xd)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_38 = iVar15 + 2;" (assignment_expression "local_38 = iVar15 + 2" identifier = (binary_expression "iVar15 + 2" identifier + number_literal)) ;) (expression_statement "local_54 = iVar15 + 1;" (assignment_expression "local_54 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar15 + 4;" (assignment_expression "piVar20[0xb] = iVar15 + 4" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = (binary_expression "iVar15 + 4" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar13 = unaff_EBP + 0x31e87;" (assignment_expression "iVar13 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) (if_statement "if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }" if (parenthesized_expression "((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87))" ( (binary_expression "(bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (parenthesized_expression "(bVar7 != 0x86)" ( (binary_expression "bVar7 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" ( (comma_expression "iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87" (assignment_expression "iVar13 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) , (binary_expression "bVar7 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }" { (expression_statement "iVar13 = unaff_EBP + 0x31e73;" (assignment_expression "iVar13 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }" if (parenthesized_expression "(bVar7 != 0x85)" ( (binary_expression "bVar7 != 0x85" identifier != number_literal) )) (compound_statement "{\n                iVar13 = unaff_EBP + 0x31e8e;\n              }" { (expression_statement "iVar13 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar13 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) })) })) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32431,iVar13)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32431" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000493f0(0,piVar28[0x1a] + 1)" identifier (argument_list "(0,piVar28[0x1a] + 1)" ( number_literal , (binary_expression "piVar28[0x1a] + 1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*(int *)(iVar29 + 8) = local_9c;" (assignment_expression "*(int *)(iVar29 + 8) = local_9c" (pointer_expression "*(int *)(iVar29 + 8)" * (cast_expression "(int *)(iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 8)" ( (binary_expression "iVar29 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x3243c)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x3243c" identifier + number_literal) ))) ;) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar13 = piVar28[3];" (assignment_expression "iVar13 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(iVar13 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + 0x13) = 0" (pointer_expression "*(undefined1 *)(iVar13 + 0x13)" * (cast_expression "(undefined1 *)(iVar13 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x13)" ( (binary_expression "iVar13 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x1c)" * (cast_expression "(undefined4 *)(iVar13 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x1c)" ( (binary_expression "iVar13 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }" if (parenthesized_expression "(iVar18 < 0)" ( (binary_expression "iVar18 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar18 = piVar28[0x1a] + -1;\n            }" { (expression_statement "iVar18 = piVar28[0x1a] + -1;" (assignment_expression "iVar18 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar13 = unaff_EBP + 0x67823;" (assignment_expression "iVar13 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }" { (expression_statement "iVar13 = piVar28[0x19] + iVar18 * 0x14;" (assignment_expression "iVar13 = piVar28[0x19] + iVar18 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar18 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x14" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar13 + 8) = piVar28[0x1a];" (assignment_expression "*(int *)(iVar13 + 8) = piVar28[0x1a]" (pointer_expression "*(int *)(iVar13 + 8)" * (cast_expression "(int *)(iVar13 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000493f0(0,piVar28[0x1a] + 1)" identifier (argument_list "(0,piVar28[0x1a] + 1)" ( number_literal , (binary_expression "piVar28[0x1a] + 1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 8);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "uVar22 = *(undefined4 *)(param_2 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_2 + 8) = local_90;" (assignment_expression "*(int *)(param_2 + 8) = local_90" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32441)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32441)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32441" identifier + number_literal) ))) ;) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 8) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 8) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar13 = piVar28[3];" (assignment_expression "iVar13 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(iVar13 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + 0x13) = 0" (pointer_expression "*(undefined1 *)(iVar13 + 0x13)" * (cast_expression "(undefined1 *)(iVar13 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x13)" ( (binary_expression "iVar13 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x1c)" * (cast_expression "(undefined4 *)(iVar13 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x1c)" ( (binary_expression "iVar13 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);" (assignment_expression "uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" identifier = (call_expression "FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" identifier (argument_list "(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" ( (pointer_expression "&local_4c" & identifier) , (pointer_expression "&local_48" & identifier) , identifier , (binary_expression "iVar15 + 3" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }" if (parenthesized_expression "(uVar12 - 0x84 < 2)" ( (binary_expression "uVar12 - 0x84 < 2" (binary_expression "uVar12 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }" { (expression_statement "local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);" (assignment_expression "local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" identifier = (call_expression "FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" identifier (argument_list "(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" ( (pointer_expression "&local_30" & identifier) , (pointer_expression "&local_2c" & identifier) , identifier , (binary_expression "iVar15 + 4" identifier + number_literal) , identifier , identifier , identifier )))) ;) })) (if_statement "if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }" if (parenthesized_expression "((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0))" ( (binary_expression "(local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)" (parenthesized_expression "(local_b0 != (int *)0x0)" ( (binary_expression "local_b0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)" ( (comma_expression "iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "iVar15 = *local_b0" identifier = (pointer_expression "*local_b0" * identifier)) , (comma_expression "*local_b0 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "*local_b0 = iVar15 + -1" (pointer_expression "*local_b0" * identifier) = (binary_expression "iVar15 + -1" identifier + number_literal)) , (binary_expression "iVar15 + -1 == 0" (binary_expression "iVar15 + -1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n              FUN_00023410();\n            }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar15 = iVar19;" (assignment_expression "iVar15 = iVar19" identifier = identifier) ;) (expression_statement "local_94 = iVar19;" (assignment_expression "local_94 = iVar19" identifier = identifier) ;) (if_statement "if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }" if (parenthesized_expression "(1 < uVar12 - 0x86)" ( (binary_expression "1 < uVar12 - 0x86" number_literal < (binary_expression "uVar12 - 0x86" identifier - number_literal)) )) (compound_statement "{\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }" { (expression_statement "iVar15 = FUN_00049630(local_88);" (assignment_expression "iVar15 = FUN_00049630(local_88)" identifier = (call_expression "FUN_00049630(local_88)" identifier (argument_list "(local_88)" ( identifier )))) ;) (expression_statement "local_94 = FUN_00049630(iVar19);" (assignment_expression "local_94 = FUN_00049630(iVar19)" identifier = (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" identifier = (call_expression "FUN_00024680()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" if (parenthesized_expression "(uVar12 == 0x87)" ( (binary_expression "uVar12 == 0x87" identifier == number_literal) )) (compound_statement "{\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }" { (if_statement "if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar29 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar29 + 2)" * (cast_expression "(short *)(iVar29 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 2)" ( (binary_expression "iVar29 + 2" identifier + number_literal) )))) < (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) )) (compound_statement "{\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar29 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar29 + 2)" (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = (pointer_expression "*(short *)(iVar29 + 2)" * (cast_expression "(short *)(iVar29 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 2)" ( (binary_expression "iVar29 + 2" identifier + number_literal) ))))) ;) })) (expression_statement "local_a8 = FUN_00049630(uVar16);" (assignment_expression "local_a8 = FUN_00049630(uVar16)" identifier = (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "local_b0 = (int *)iVar15;" (assignment_expression "local_b0 = (int *)iVar15" identifier = (cast_expression "(int *)iVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" else (compound_statement "{\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" { (expression_statement "local_b0 = (int *)FUN_00049630(uVar16);" (assignment_expression "local_b0 = (int *)FUN_00049630(uVar16)" identifier = (cast_expression "(int *)FUN_00049630(uVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))))) ;) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (expression_statement "local_a8 = FUN_00049630(uVar16);" (assignment_expression "local_a8 = FUN_00049630(uVar16)" identifier = (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (if_statement "if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }" if (parenthesized_expression "(uVar12 != 0x85)" ( (binary_expression "uVar12 != 0x85" identifier != number_literal) )) (compound_statement "{\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }" { (expression_statement "local_a8 = FUN_00049630(iVar15);" (assignment_expression "local_a8 = FUN_00049630(iVar15)" identifier = (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) })) }))) (expression_statement "iVar19 = piVar28[0x1a];" (assignment_expression "iVar19 = piVar28[0x1a]" identifier = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }" if (parenthesized_expression "(uVar12 - 0x84 < 2)" ( (binary_expression "uVar12 - 0x84 < 2" (binary_expression "uVar12 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              FUN_00049630(local_88);\n            }" { (expression_statement "FUN_00049630(local_88);" (call_expression "FUN_00049630(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) })) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar15 = piVar28[0x1a] + -1;" (assignment_expression "iVar15 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }" if (parenthesized_expression "(-1 < iVar18)" ( (binary_expression "-1 < iVar18" number_literal < identifier) )) (compound_statement "{\n              iVar15 = iVar18;\n            }" { (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" identifier = identifier) ;) })) (expression_statement "iVar11 = unaff_EBP + 0x67823;" (assignment_expression "iVar11 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }" { (expression_statement "iVar11 = piVar28[0x19] + iVar15 * 0x14;" (assignment_expression "iVar11 = piVar28[0x19] + iVar15 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar15 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar15 * 0x14" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar11 + 8) = piVar28[0x1a];" (assignment_expression "*(int *)(iVar11 + 8) = piVar28[0x1a]" (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00049630(local_94);" (call_expression "FUN_00049630(local_94)" identifier (argument_list "(local_94)" ( identifier ))) ;) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "FUN_000436c0(0xfffffff1);" (call_expression "FUN_000436c0(0xfffffff1)" identifier (argument_list "(0xfffffff1)" ( number_literal ))) ;) (expression_statement "FUN_000493f0(local_30,iVar21);" (call_expression "FUN_000493f0(local_30,iVar21)" identifier (argument_list "(local_30,iVar21)" ( identifier , identifier ))) ;) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (if_statement "if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }" if (parenthesized_expression "(0 < piVar28[0x1a])" ( (binary_expression "0 < piVar28[0x1a]" number_literal < (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }" { (expression_statement "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1" (pointer_expression "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" ( (binary_expression "piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12" (binary_expression "piVar28[0x19] + piVar28[0x1a] * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "piVar28[0x1a] * 0x14" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_000493f0(local_a8,iVar19);" (call_expression "FUN_000493f0(local_a8,iVar19)" identifier (argument_list "(local_a8,iVar19)" ( identifier , identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }" if (parenthesized_expression "(*(int *)(param_2 + 0x34) != 0)" ( (binary_expression "*(int *)(param_2 + 0x34) != 0" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00053bb0();\n            }" { (expression_statement "FUN_00053bb0();" (call_expression "FUN_00053bb0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(param_2 + 0x34) = iVar29;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar29" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(iVar29 + 0x38) = param_2;" (assignment_expression "*(byte **)(iVar29 + 0x38) = param_2" (pointer_expression "*(byte **)(iVar29 + 0x38)" * (cast_expression "(byte **)(iVar29 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar29 + 0x38)" ( (binary_expression "iVar29 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = piVar20[0x36];" (assignment_expression "iVar19 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }" { (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar19 = piVar28[0x1a] + -1;\n              }" { (expression_statement "iVar19 = piVar28[0x1a] + -1;" (assignment_expression "iVar19 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar15 = unaff_EBP + 0x67823;" (assignment_expression "iVar15 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }" { (expression_statement "iVar15 = piVar28[0x19] + iVar19 * 0x14;" (assignment_expression "iVar15 = piVar28[0x19] + iVar19 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar19 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar19 * 0x14" identifier * number_literal))) ;) })) (expression_statement "iVar19 = *(int *)(iVar15 + 8);" (assignment_expression "iVar19 = *(int *)(iVar15 + 8)" identifier = (pointer_expression "*(int *)(iVar15 + 8)" * (cast_expression "(int *)(iVar15 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 8)" ( (binary_expression "iVar15 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "piVar20[0x36] = iVar19;" (assignment_expression "piVar20[0x36] = iVar19" (subscript_expression "piVar20[0x36]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0 = (byte *)(uint)(piVar20[9] != 0);" (assignment_expression "local_d0 = (byte *)(uint)(piVar20[9] != 0)" identifier = (cast_expression "(byte *)(uint)(piVar20[9] != 0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(piVar20[9] != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar20[9] != 0)" ( (binary_expression "piVar20[9] != 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) != number_literal) ))))) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }" if (parenthesized_expression "(*(int *)(iVar19 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x34) == 0" (pointer_expression "*(int *)(iVar19 + 0x34)" * (cast_expression "(int *)(iVar19 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }" { (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32447)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32447)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32447" identifier + number_literal) ))) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32456)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32456)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32456" identifier + number_literal) ))) ;) })) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" if (parenthesized_expression "(bVar7 == 0x85)" ( (binary_expression "bVar7 == 0x85" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }" { (expression_statement "*(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);" (assignment_expression "*(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8)" (pointer_expression "*(undefined4 *)(iVar19 + 8)" * (cast_expression "(undefined4 *)(iVar19 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "*(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc)" (pointer_expression "*(undefined4 *)(iVar19 + 0xc)" * (cast_expression "(undefined4 *)(iVar19 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0xc)" ( (binary_expression "iVar19 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar19 + 0x3c)" * (cast_expression "(undefined4 *)(iVar19 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x3c)" ( (binary_expression "iVar19 + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }" if (parenthesized_expression "(local_d0 == (byte *)0x0)" ( (binary_expression "local_d0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }" { (expression_statement "local_c4 = *(int *)(iVar19 + 8);" (assignment_expression "local_c4 = *(int *)(iVar19 + 8)" identifier = (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar19 + 0xc);" (assignment_expression "uVar16 = *(undefined4 *)(iVar19 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar19 + 0xc)" * (cast_expression "(undefined4 *)(iVar19 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0xc)" ( (binary_expression "iVar19 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_2 + 8) = local_c4;" (assignment_expression "*(int *)(param_2 + 8) = local_c4" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }" if (parenthesized_expression "(local_c4 != 0)" ( (binary_expression "local_c4 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }" { (expression_statement "uVar31 = FUN_00049630(0);" (assignment_expression "uVar31 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);" (assignment_expression "uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar31 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar31 >> 0x20)" ( (binary_expression "(ulonglong)uVar31 >> 0x20" (cast_expression "(ulonglong)uVar31" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c4 = (int)uVar31;" (assignment_expression "local_c4 = (int)uVar31" identifier = (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar29 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar29 = *(int *)(param_2 + 0xc)" identifier = (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }" { (expression_statement "FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);" (call_expression "FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16)" identifier (argument_list "(iVar29 + 1,iVar29,uVar16,uVar16)" ( (binary_expression "iVar29 + 1" identifier + number_literal) , identifier , identifier , identifier ))) ;) })) })) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x31e73)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal) ))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" identifier = (call_expression "FUN_00024680()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }" if (parenthesized_expression "(((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c))" ( (binary_expression "((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)" (parenthesized_expression "((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0))" ( (binary_expression "(*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)" (parenthesized_expression "(*(int *)(iVar19 + 0x3c) != 0)" ( (binary_expression "*(int *)(iVar19 + 0x3c) != 0" (pointer_expression "*(int *)(iVar19 + 0x3c)" * (cast_expression "(int *)(iVar19 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x3c)" ( (binary_expression "iVar19 + 0x3c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar19 = FUN_00025130(), iVar19 != 0)" ( (comma_expression "iVar19 = FUN_00025130(), iVar19 != 0" (assignment_expression "iVar19 = FUN_00025130()" identifier = (call_expression "FUN_00025130()" identifier (argument_list "()" ( )))) , (binary_expression "iVar19 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(0 < (int)local_3c)" ( (binary_expression "0 < (int)local_3c" number_literal < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }" { (expression_statement "sVar9 = *(short *)(param_2 + 2);" (assignment_expression "sVar9 = *(short *)(param_2 + 2)" identifier = (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = (int)local_3c >> 0x1f;" (assignment_expression "uVar12 = (int)local_3c >> 0x1f" identifier = (binary_expression "(int)local_3c >> 0x1f" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" if (parenthesized_expression "((int)local_3c < 8)" ( (binary_expression "(int)local_3c < 8" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }" { (if_statement "if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" if (parenthesized_expression "(local_3c == 1)" ( (binary_expression "local_3c == 1" identifier == number_literal) )) (compound_statement "{\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }" { (if_statement "if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }" if (parenthesized_expression "(0 < sVar9)" ( (binary_expression "0 < sVar9" number_literal < identifier) )) (compound_statement "{\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }" { (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a1cbb;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" else (compound_statement "{\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" { (expression_statement "uVar23 = local_3c;" (assignment_expression "uVar23 = local_3c" identifier = identifier) ;) (expression_statement "uVar27 = uVar12;" (assignment_expression "uVar27 = uVar12" identifier = identifier) ;) (expression_statement "sVar5 = 0x28;" (assignment_expression "sVar5 = 0x28" identifier = number_literal) ;) (do_statement "do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);" do (compound_statement "{\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    }" { (expression_statement "sVar24 = sVar5;" (assignment_expression "sVar24 = sVar5" identifier = identifier) ;) (expression_statement "uVar4 = uVar23 * 2;" (assignment_expression "uVar4 = uVar23 * 2" identifier = (binary_expression "uVar23 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;" if (parenthesized_expression "((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0)" ( (binary_expression "(uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0" (binary_expression "(uVar27 & 0x7fffffff) != 0" (parenthesized_expression "(uVar27 & 0x7fffffff)" ( (binary_expression "uVar27 & 0x7fffffff" identifier & number_literal) )) != number_literal) || (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = uVar4;" (assignment_expression "uVar23 = uVar4" identifier = identifier) ;) (expression_statement "sVar5 = sVar24 + -10;" (assignment_expression "sVar5 = sVar24 + -10" identifier = (binary_expression "sVar24 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) ;) (if_statement "if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" if (parenthesized_expression "((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9)" ( (binary_expression "(short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9" (cast_expression "(short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))" ( (binary_expression "sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" (binary_expression "sVar24 + -0x14" identifier + number_literal) + (pointer_expression "*(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" * (cast_expression "(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" ( (binary_expression "unaff_EBP + 0x38a1f + (uVar4 & 7) * 2" (binary_expression "unaff_EBP + 0x38a1f" identifier + number_literal) + (binary_expression "(uVar4 & 7) * 2" (parenthesized_expression "(uVar4 & 7)" ( (binary_expression "uVar4 & 7" identifier & number_literal) )) * number_literal)) ))))) ))) < identifier) )) (compound_statement "{\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" { (expression_statement "sVar9 = 0x28;" (assignment_expression "sVar9 = 0x28" identifier = number_literal) ;) (expression_statement "local_bc = local_3c;" (assignment_expression "local_bc = local_3c" identifier = identifier) ;) (do_statement "do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);" do (compound_statement "{\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      }" { (expression_statement "sVar9 = sVar9 + -10;" (assignment_expression "sVar9 = sVar9 + -10" identifier = (binary_expression "sVar9 + -10" identifier + number_literal)) ;) (expression_statement "bVar30 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar30 = CARRY4(local_bc,local_bc)" identifier = (call_expression "CARRY4(local_bc,local_bc)" identifier (argument_list "(local_bc,local_bc)" ( identifier , identifier )))) ;) (expression_statement "local_bc = local_bc * 2;" (assignment_expression "local_bc = local_bc * 2" identifier = (binary_expression "local_bc * 2" identifier * number_literal)) ;) (if_statement "if (uVar12 * 2 + (uint)bVar30 != 0) break;" if (parenthesized_expression "(uVar12 * 2 + (uint)bVar30 != 0)" ( (binary_expression "uVar12 * 2 + (uint)bVar30 != 0" (binary_expression "uVar12 * 2 + (uint)bVar30" (binary_expression "uVar12 * 2" identifier * number_literal) + (cast_expression "(uint)bVar30" ( (type_descriptor "uint" type_identifier) ) identifier)) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_bc < 8)" ( (binary_expression "local_bc < 8" identifier < number_literal) )) ;) (goto_statement "goto LAB_000a1ca8;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" else (compound_statement "{\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" { (if_statement "if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" { (for_statement "for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }" for ( ; (binary_expression "uVar12 >> uVar27 == 0" (binary_expression "uVar12 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" identifier = (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" else (compound_statement "{\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" { (for_statement "for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }" for ( ; (binary_expression "local_3c >> uVar27 == 0" (binary_expression "local_3c >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" ( (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" identifier = (binary_expression "0x3c - uVar27" number_literal - identifier)) ;) (expression_statement "bVar7 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar7 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;" (assignment_expression "uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7" identifier = (binary_expression "local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (binary_expression "local_3c >> bVar7" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar7" identifier << (binary_expression "0x20 - bVar7" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }" { (expression_statement "uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar23 = uVar12 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar27 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }" if (parenthesized_expression "((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9)" ( (binary_expression "(short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9" (cast_expression "(short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2))" ( (binary_expression "(short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" (binary_expression "(short)uVar27 * 10 + 0x1e" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal) + (pointer_expression "*(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" * (cast_expression "(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" ( (binary_expression "unaff_EBP + 0x38a1f + (uVar23 & 7) * 2" (binary_expression "unaff_EBP + 0x38a1f" identifier + number_literal) + (binary_expression "(uVar23 & 7) * 2" (parenthesized_expression "(uVar23 & 7)" ( (binary_expression "uVar23 & 7" identifier & number_literal) )) * number_literal)) ))))) ))) < identifier) )) (compound_statement "{\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }" { (if_statement "if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" { (for_statement "for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }" for ( ; (binary_expression "uVar12 >> uVar27 == 0" (binary_expression "uVar12 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" identifier = (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" else (compound_statement "{\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" { (for_statement "for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }" for ( ; (binary_expression "local_3c >> uVar27 == 0" (binary_expression "local_3c >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" ( (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" identifier = (binary_expression "0x3c - uVar27" number_literal - identifier)) ;) (expression_statement "sVar9 = (short)uVar27 * 10 + 0x28;" (assignment_expression "sVar9 = (short)uVar27 * 10 + 0x28" identifier = (binary_expression "(short)uVar27 * 10 + 0x28" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "bVar7 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar7 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;" (assignment_expression "local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7" identifier = (binary_expression "local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (binary_expression "local_3c >> bVar7" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar7" identifier << (binary_expression "0x20 - bVar7" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }" { (expression_statement "local_bc = uVar12 >> ((byte)uVar27 & 0x1f);" (assignment_expression "local_bc = uVar12 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar27 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (labeled_statement "LAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);" statement_identifier : (expression_statement "local_b0 = (int *)(unaff_EBP + 0x38a1f);" (assignment_expression "local_b0 = (int *)(unaff_EBP + 0x38a1f)" identifier = (cast_expression "(int *)(unaff_EBP + 0x38a1f)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x38a1f)" ( (binary_expression "unaff_EBP + 0x38a1f" identifier + number_literal) )))) ;)) (expression_statement "sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);" (assignment_expression "sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2)" identifier = (binary_expression "sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2)" (binary_expression "sVar9 + -10" identifier + number_literal) + (pointer_expression "*(short *)((int)local_b0 + (local_bc & 7) * 2)" * (cast_expression "(short *)((int)local_b0 + (local_bc & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + (local_bc & 7) * 2)" ( (binary_expression "(int)local_b0 + (local_bc & 7) * 2" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(local_bc & 7) * 2" (parenthesized_expression "(local_bc & 7)" ( (binary_expression "local_bc & 7" identifier & number_literal) )) * number_literal)) )))))) ;) (labeled_statement "LAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;" statement_identifier : (expression_statement "*(short *)(param_2 + 2) = sVar9;" (assignment_expression "*(short *)(param_2 + 2) = sVar9" (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;)) })) }))) })) (if_statement "if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }" if (parenthesized_expression "(local_c4 != 0)" ( (binary_expression "local_c4 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }" { (expression_statement "iVar19 = local_c8[0x1a] + -1;" (assignment_expression "iVar19 = local_c8[0x1a] + -1" identifier = (binary_expression "local_c8[0x1a] + -1" (subscript_expression "local_c8[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }" if (parenthesized_expression "(-1 < local_c4)" ( (binary_expression "-1 < local_c4" number_literal < identifier) )) (compound_statement "{\n                  iVar19 = local_c4;\n                }" { (expression_statement "iVar19 = local_c4;" (assignment_expression "iVar19 = local_c4" identifier = identifier) ;) })) (expression_statement "iVar29 = unaff_EBP + 0x67823;" (assignment_expression "iVar29 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }" if (parenthesized_expression "(*(char *)(*local_c8 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*local_c8 + 0x4d) == '\0'" (pointer_expression "*(char *)(*local_c8 + 0x4d)" * (cast_expression "(char *)(*local_c8 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_c8 + 0x4d)" ( (binary_expression "*local_c8 + 0x4d" (pointer_expression "*local_c8" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }" { (expression_statement "iVar29 = iVar19 * 0x14 + local_c8[0x19];" (assignment_expression "iVar29 = iVar19 * 0x14 + local_c8[0x19]" identifier = (binary_expression "iVar19 * 0x14 + local_c8[0x19]" (binary_expression "iVar19 * 0x14" identifier * number_literal) + (subscript_expression "local_c8[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(iVar29 + 8) = local_c8[0x1a];" (assignment_expression "*(int *)(iVar29 + 8) = local_c8[0x1a]" (pointer_expression "*(int *)(iVar29 + 8)" * (cast_expression "(int *)(iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 8)" ( (binary_expression "iVar29 + 8" identifier + number_literal) )))) = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_000a0ff8;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" else (compound_statement "{\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" { (if_statement "if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" if (parenthesized_expression "((bVar7 == 0x86) || (bVar7 == 0x84))" ( (binary_expression "(bVar7 == 0x86) || (bVar7 == 0x84)" (parenthesized_expression "(bVar7 == 0x86)" ( (binary_expression "bVar7 == 0x86" identifier == number_literal) )) || (parenthesized_expression "(bVar7 == 0x84)" ( (binary_expression "bVar7 == 0x84" identifier == number_literal) ))) )) (compound_statement "{\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" { (expression_statement "local_38 = local_70;" (assignment_expression "local_38 = local_70" identifier = identifier) ;) (if_statement "if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }" if (parenthesized_expression "((char)local_74 != '\x01')" ( (binary_expression "(char)local_74 != '\x01'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }" { (expression_statement "iVar29 = piVar20[10];" (assignment_expression "iVar29 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = iVar29 + 1;" (assignment_expression "piVar20[10] = iVar29 + 1" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_00049630(0);" (assignment_expression "uVar16 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar3 = param_2;" (assignment_expression "pbVar3 = param_2" identifier = identifier) ;) (do_statement "do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);" do (compound_statement "{\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                }" { (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" identifier = identifier) ;) (expression_statement "pbVar3 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar3 = *(byte **)(pbVar26 + 0x38)" identifier = (pointer_expression "*(byte **)(pbVar26 + 0x38)" * (cast_expression "(byte **)(pbVar26 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x38)" ( (binary_expression "pbVar26 + 0x38" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(pbVar3 != (byte *)0x0)" ( (binary_expression "pbVar3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar2 = (uint *)(pbVar26 + 4);" (assignment_expression "puVar2 = (uint *)(pbVar26 + 4)" identifier = (cast_expression "(uint *)(pbVar26 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) )))) ;) (expression_statement "*puVar2 = *puVar2 | 0x20;" (assignment_expression "*puVar2 = *puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (expression_statement "local_38 = iVar29;" (assignment_expression "local_38 = iVar29" identifier = identifier) ;) })) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" identifier = (call_expression "CONCAT31(local_3c._1_3_,1)" identifier (argument_list "(local_3c._1_3_,1)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 != (byte *)0x0) goto LAB_000a0696;" if (parenthesized_expression "(local_d0 != (byte *)0x0)" ( (binary_expression "local_d0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a0696;" goto statement_identifier ;)) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" if (parenthesized_expression "(bVar7 == 0x86)" ( (binary_expression "bVar7 == 0x86" identifier == number_literal) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,2);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,2)" identifier = (call_expression "CONCAT31(local_3c._1_3_,2)" identifier (argument_list "(local_3c._1_3_,2)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "iVar29 = unaff_EBP + 0x31e87;" (assignment_expression "iVar29 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) }) (else_clause "else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" else (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" identifier = (call_expression "CONCAT31(local_3c._1_3_,1)" identifier (argument_list "(local_3c._1_3_,1)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "iVar29 = unaff_EBP + 0x31e73;" (assignment_expression "iVar29 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }" if (parenthesized_expression "(bVar7 != 0x85)" ( (binary_expression "bVar7 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }" { (expression_statement "iVar29 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar29 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }" if (parenthesized_expression "(bVar7 != 0x87)" ( (binary_expression "bVar7 != 0x87" identifier != number_literal) )) (compound_statement "{\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }" { (expression_statement "iVar29 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar29 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) })) })) }))) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32469,iVar29)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32469" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }" if (parenthesized_expression "(*param_2 == 0x84)" ( (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }" { (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" identifier = (call_expression "FUN_00024680()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                FUN_00053f30();\n              }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }" if (parenthesized_expression "(((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0'))" ( (binary_expression "((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')" (parenthesized_expression "((char)local_74 != '\x01')" ( (binary_expression "(char)local_74 != '\x01'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar15 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar15 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }" { (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar21 = piVar20[0xe] + -2;" (assignment_expression "iVar21 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar21;" (assignment_expression "piVar20[0xe] = iVar21" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;) (expression_statement "iVar29 = local_c8[0x1a];" (assignment_expression "iVar29 = local_c8[0x1a]" identifier = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_000964a0(0,0,&local_74,iVar21,iVar19);" (call_expression "FUN_000964a0(0,0,&local_74,iVar21,iVar19)" identifier (argument_list "(0,0,&local_74,iVar21,iVar19)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(iVar29);" (call_expression "FUN_00049630(iVar29)" identifier (argument_list "(iVar29)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000a16d1:\n                FUN_00049630(0);" statement_identifier : (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;)) })) (labeled_statement "LAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" statement_identifier : (if_statement "if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" if (parenthesized_expression "(*(int *)(param_2 + 0x38) == 0)" ( (binary_expression "*(int *)(param_2 + 0x38) == 0" (pointer_expression "*(int *)(param_2 + 0x38)" * (cast_expression "(int *)(param_2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" { (expression_statement "iVar19 = piVar20[0x36];" (assignment_expression "iVar19 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }" { (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n                    iVar19 = piVar28[0x1a] + -1;\n                  }" { (expression_statement "iVar19 = piVar28[0x1a] + -1;" (assignment_expression "iVar19 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar29 = unaff_EBP + 0x67823;" (assignment_expression "iVar29 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }" { (expression_statement "iVar29 = iVar19 * 0x14 + piVar28[0x19];" (assignment_expression "iVar29 = iVar19 * 0x14 + piVar28[0x19]" identifier = (binary_expression "iVar19 * 0x14 + piVar28[0x19]" (binary_expression "iVar19 * 0x14" identifier * number_literal) + (subscript_expression "piVar28[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar19 = *(int *)(iVar29 + 8);" (assignment_expression "iVar19 = *(int *)(iVar29 + 8)" identifier = (pointer_expression "*(int *)(iVar29 + 8)" * (cast_expression "(int *)(iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 8)" ( (binary_expression "iVar29 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "piVar20[0x36] = iVar19;" (assignment_expression "piVar20[0x36] = iVar19" (subscript_expression "piVar20[0x36]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (piVar20[9] == 0) goto LAB_000a0282;" if (parenthesized_expression "(piVar20[9] == 0)" ( (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000a0282;" goto statement_identifier ;)) (goto_statement "goto LAB_000a028c;" goto statement_identifier ;) })) (expression_statement "iVar29 = piVar20[10];" (assignment_expression "iVar29 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = iVar29 + 2;" (assignment_expression "piVar20[10] = iVar29 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "iVar29 + 2" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_00049630(0);" (assignment_expression "uVar16 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar3 = param_2;" (assignment_expression "pbVar3 = param_2" identifier = identifier) ;) (do_statement "do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);" do (compound_statement "{\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            }" { (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" identifier = identifier) ;) (expression_statement "pbVar3 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar3 = *(byte **)(pbVar26 + 0x38)" identifier = (pointer_expression "*(byte **)(pbVar26 + 0x38)" * (cast_expression "(byte **)(pbVar26 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x38)" ( (binary_expression "pbVar26 + 0x38" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(pbVar3 != (byte *)0x0)" ( (binary_expression "pbVar3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar2 = (uint *)(pbVar26 + 4);" (assignment_expression "puVar2 = (uint *)(pbVar26 + 4)" identifier = (cast_expression "(uint *)(pbVar26 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) )))) ;) (expression_statement "*puVar2 = *puVar2 | 0x20;" (assignment_expression "*puVar2 = *puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" identifier = (call_expression "CONCAT31(local_3c._1_3_,1)" identifier (argument_list "(local_3c._1_3_,1)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_38 = iVar29;" (assignment_expression "local_38 = iVar29" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" if (parenthesized_expression "(local_d0 == (byte *)0x0)" ( (binary_expression "local_d0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" { (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x18) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0x18) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar21 = unaff_EBP + 0x31e87;" (assignment_expression "iVar21 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) (if_statement "if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }" if (parenthesized_expression "((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87))" ( (binary_expression "(bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (parenthesized_expression "(bVar7 != 0x86)" ( (binary_expression "bVar7 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" ( (comma_expression "iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87" (assignment_expression "iVar21 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) , (binary_expression "bVar7 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }" { (expression_statement "iVar21 = unaff_EBP + 0x31e73;" (assignment_expression "iVar21 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }" if (parenthesized_expression "(bVar7 != 0x85)" ( (binary_expression "bVar7 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }" { (expression_statement "iVar21 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar21 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) })) })) (expression_statement "local_38 = iVar29 + 1;" (assignment_expression "local_38 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32469,iVar21)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32469" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar19 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar19 + 2)" * (cast_expression "(short *)(iVar19 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 2)" ( (binary_expression "iVar19 + 2" identifier + number_literal) )))) < (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) )) (compound_statement "{\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar19 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar19 + 2)" (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = (pointer_expression "*(short *)(iVar19 + 2)" * (cast_expression "(short *)(iVar19 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 2)" ( (binary_expression "iVar19 + 2" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                FUN_00053f30();\n              }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }" if (parenthesized_expression "(local_d0 == (byte *)0x0)" ( (binary_expression "local_d0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }" { (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar29 = piVar20[0xe] + -2;" (assignment_expression "iVar29 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar29;" (assignment_expression "piVar20[0xe] = iVar29" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;) (if_statement "if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" if (parenthesized_expression "(*(char *)((int)piVar20 + 0x13) == '\0')" ( (binary_expression "*(char *)((int)piVar20 + 0x13) == '\0'" (pointer_expression "*(char *)((int)piVar20 + 0x13)" * (cast_expression "(char *)((int)piVar20 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 0x13)" ( (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }" { (expression_statement "iVar21 = piVar20[0xb] + 1;" (assignment_expression "iVar21 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = iVar21;" (assignment_expression "piVar20[0xb] = iVar21" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" else (compound_statement "{\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" { (expression_statement "bVar7 = *(char *)((int)piVar20 + 0x13) - 1;" (assignment_expression "bVar7 = *(char *)((int)piVar20 + 0x13) - 1" identifier = (binary_expression "*(char *)((int)piVar20 + 0x13) - 1" (pointer_expression "*(char *)((int)piVar20 + 0x13)" * (cast_expression "(char *)((int)piVar20 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 0x13)" ( (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(byte *)((int)piVar20 + 0x13) = bVar7;" (assignment_expression "*(byte *)((int)piVar20 + 0x13) = bVar7" (pointer_expression "*(byte *)((int)piVar20 + 0x13)" * (cast_expression "(byte *)((int)piVar20 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 0x13)" ( (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar21 = piVar20[bVar7 + 0x26];" (assignment_expression "iVar21 = piVar20[bVar7 + 0x26]" identifier = (subscript_expression "piVar20[bVar7 + 0x26]" identifier [ (binary_expression "bVar7 + 0x26" identifier + number_literal) ])) ;) }))) (expression_statement "uVar16 = FUN_00049630(iVar21);" (assignment_expression "uVar16 = FUN_00049630(iVar21)" identifier = (call_expression "FUN_00049630(iVar21)" identifier (argument_list "(iVar21)" ( identifier )))) ;) (expression_statement "FUN_00068470(iVar29,iVar21,0);" (call_expression "FUN_00068470(iVar29,iVar21,0)" identifier (argument_list "(iVar29,iVar21,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (iVar21 != 0) {\n                  FUN_000254e0();\n                }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000254e0();\n                }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_000964a0(0,0,&local_74,iVar29,iVar19);" (call_expression "FUN_000964a0(0,0,&local_74,iVar29,iVar19)" identifier (argument_list "(0,0,&local_74,iVar29,iVar19)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(uVar16);" (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (goto_statement "goto LAB_000a16d1;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a0ff8;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000a0696:\n          param_3[3] = local_68;" statement_identifier : (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "piVar28 = *(int **)(param_2 + 0x20);" (assignment_expression "piVar28 = *(int **)(param_2 + 0x20)" identifier = (pointer_expression "*(int **)(param_2 + 0x20)" * (cast_expression "(int **)(param_2 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_c0 = **(undefined4 **)(param_2 + 0x1c);" (assignment_expression "local_c0 = **(undefined4 **)(param_2 + 0x1c)" identifier = (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" * (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" * (cast_expression "(undefined4 **)(param_2 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "local_d0 = *(byte **)(param_2 + 0x34);" (assignment_expression "local_d0 = *(byte **)(param_2 + 0x34)" identifier = (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" if (parenthesized_expression "(*(int *)(param_2 + 0x44) == 0)" ( (binary_expression "*(int *)(param_2 + 0x44) == 0" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }" { (labeled_statement "LAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);" statement_identifier : (expression_statement "iVar19 = FUN_0003d5a0(0,0);" (assignment_expression "iVar19 = FUN_0003d5a0(0,0)" identifier = (call_expression "FUN_0003d5a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;)) (if_statement "if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" { (expression_statement "iVar13 = piVar20[0xe] + -1;" (assignment_expression "iVar13 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar13;" (assignment_expression "piVar20[0xe] = iVar13" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[2] = 0x40;" (assignment_expression "param_2[2] = 0x40" (subscript_expression "param_2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[3] = 1;" (assignment_expression "param_2[3] = 1" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *piVar28;" (assignment_expression "iVar19 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar29 = *(int *)(param_2 + 8);" (assignment_expression "iVar29 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar21 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar21 = *(int *)(param_2 + 0xc)" identifier = (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar14 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar14 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = extraout_EDX;" (assignment_expression "iVar11 = extraout_EDX" identifier = identifier) ;) (if_statement "if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "bVar7 = *(byte *)((int)piVar28 + 0x2d);" (assignment_expression "bVar7 = *(byte *)((int)piVar28 + 0x2d)" identifier = (pointer_expression "*(byte *)((int)piVar28 + 0x2d)" * (cast_expression "(byte *)((int)piVar28 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar28 + 0x2d)" ( (binary_expression "(int)piVar28 + 0x2d" (cast_expression "(int)piVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }" while (parenthesized_expression "(((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19)))" ( (parenthesized_expression "((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))" ( (binary_expression "(bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19)" (binary_expression "(bVar7 & 0x20) == 0" (parenthesized_expression "(bVar7 & 0x20)" ( (binary_expression "bVar7 & 0x20" identifier & number_literal) )) == number_literal) && (parenthesized_expression "(iVar18 = iVar18 + 1, iVar18 != iVar19)" ( (comma_expression "iVar18 = iVar18 + 1, iVar18 != iVar19" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) , (binary_expression "iVar18 != iVar19" identifier != identifier)) ))) )) )) (compound_statement "{\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }" { (expression_statement "iVar11 = iVar18 * 0x44;" (assignment_expression "iVar11 = iVar18 * 0x44" identifier = (binary_expression "iVar18 * 0x44" identifier * number_literal)) ;) (expression_statement "bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);" (assignment_expression "bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d)" identifier = (pointer_expression "*(byte *)((int)piVar28 + iVar11 + 0x2d)" * (cast_expression "(byte *)((int)piVar28 + iVar11 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar28 + iVar11 + 0x2d)" ( (binary_expression "(int)piVar28 + iVar11 + 0x2d" (binary_expression "(int)piVar28 + iVar11" (cast_expression "(int)piVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) })) })) (expression_statement "local_38 = piVar20[10];" (assignment_expression "local_38 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "local_bc = local_38 + 1;" (assignment_expression "local_bc = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "piVar20[10] = local_bc;" (assignment_expression "piVar20[10] = local_bc" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar19 = piVar20[0xb] + 1;" (assignment_expression "iVar19 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" if (parenthesized_expression "(*param_2 == 0x84)" ( (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }" { (if_statement "if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,8);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,8)" identifier = (call_expression "CONCAT31(local_3c._1_3_,8)" identifier (argument_list "(local_3c._1_3_,8)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "piVar20[10] = local_38 + 2;" (assignment_expression "piVar20[10] = local_38 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "local_38 + 2" identifier + number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0,iVar11,iVar11);" (call_expression "FUN_000493f0(iVar19,local_c0,iVar11,iVar11)" identifier (argument_list "(iVar19,local_c0,iVar11,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000a049c;" goto statement_identifier ;) })) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,6);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,6)" identifier = (call_expression "CONCAT31(local_3c._1_3_,6)" identifier (argument_list "(local_3c._1_3_,6)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "piVar20[10] = local_38 + 2;" (assignment_expression "piVar20[10] = local_38 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "local_38 + 2" identifier + number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0,piVar20,piVar20);" (call_expression "FUN_000493f0(iVar19,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar19,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" identifier (argument_list "(local_c0)" ( identifier ))) ;) (labeled_statement "LAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" statement_identifier : (if_statement "if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" if (parenthesized_expression "(local_bc != 0)" ( (binary_expression "local_bc != 0" identifier != number_literal) )) (compound_statement "{\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" { (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;" (assignment_expression "*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 4) | 0x20" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x38] = 0;" (assignment_expression "local_d0[0x38] = 0" (subscript_expression "local_d0[0x38]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x39] = 0;" (assignment_expression "local_d0[0x39] = 0" (subscript_expression "local_d0[0x39]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3a] = 0;" (assignment_expression "local_d0[0x3a] = 0" (subscript_expression "local_d0[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3b] = 0;" (assignment_expression "local_d0[0x3b] = 0" (subscript_expression "local_d0[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x3241c)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x3241c" identifier + number_literal) ))) ;) (expression_statement "iVar11 = FUN_0008d250();" (assignment_expression "iVar11 = FUN_0008d250()" identifier = (call_expression "FUN_0008d250()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(byte **)(local_d0 + 0x38) = param_2;" (assignment_expression "*(byte **)(local_d0 + 0x38) = param_2" (pointer_expression "*(byte **)(local_d0 + 0x38)" * (cast_expression "(byte **)(local_d0 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x38)" ( (binary_expression "local_d0 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }" { (expression_statement "local_c0 = FUN_00049630(iVar13);" (assignment_expression "local_c0 = FUN_00049630(iVar13)" identifier = (call_expression "FUN_00049630(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (piVar14 == (int *)0x0) goto LAB_000a1b0c;" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1b0c;" goto statement_identifier ;)) (expression_statement "FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);" (call_expression "FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22)" identifier (argument_list "(*piVar14 + 1,iVar19,uVar22,uVar22)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_000a191e:\n                uVar22 = FUN_00049630(0);" statement_identifier : (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;)) (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar19;" (assignment_expression "piVar20[0xe] = iVar19" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }" if (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) (compound_statement "{\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }" { (expression_statement "FUN_000493f0(iVar19,1,uVar22,uVar22);" (call_expression "FUN_000493f0(iVar19,1,uVar22,uVar22)" identifier (argument_list "(iVar19,1,uVar22,uVar22)" ( identifier , number_literal , identifier , identifier ))) ;) })) (expression_statement "FUN_000964a0(0,0,&local_74,iVar19,iVar13);" (call_expression "FUN_000964a0(0,0,&local_74,iVar19,iVar13)" identifier (argument_list "(0,0,&local_74,iVar19,iVar13)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (if_statement "if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00049630(iVar13);\n                }" { (expression_statement "FUN_00049630(iVar13);" (call_expression "FUN_00049630(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) })) (expression_statement "uVar22 = FUN_000330b0();" (assignment_expression "uVar22 = FUN_000330b0()" identifier = (call_expression "FUN_000330b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" if (parenthesized_expression "((param_2[4] & 8) == 0)" ( (binary_expression "(param_2[4] & 8) == 0" (parenthesized_expression "(param_2[4] & 8)" ( (binary_expression "param_2[4] & 8" (subscript_expression "param_2[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }" { (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32422,uVar22)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32422" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(byte **)(param_2 + 0x34) = local_d0;" (assignment_expression "*(byte **)(param_2 + 0x34) = local_d0" (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" else (compound_statement "{\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" { (expression_statement "FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);" (call_expression "FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22)" identifier (argument_list "(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22)" ( identifier , (binary_expression "&UNK_00034dc7 + unaff_EBP" (pointer_expression "&UNK_00034dc7" & identifier) + identifier) , identifier , identifier ))) ;) }))) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" identifier (argument_list "(local_c0)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" else (compound_statement "{\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" { (if_statement "if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,7);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,7)" identifier = (call_expression "CONCAT31(local_3c._1_3_,7)" identifier (argument_list "(local_3c._1_3_,7)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0);" (call_expression "FUN_000493f0(iVar19,local_c0)" identifier (argument_list "(iVar19,local_c0)" ( identifier , identifier ))) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a049c:\n                FUN_00050020();" statement_identifier : (expression_statement "FUN_00050020();" (call_expression "FUN_00050020()" identifier (argument_list "()" ( ))) ;)) (expression_statement "FUN_00049630(*piVar14 + 2);" (call_expression "FUN_00049630(*piVar14 + 2)" identifier (argument_list "(*piVar14 + 2)" ( (binary_expression "*piVar14 + 2" (pointer_expression "*piVar14" * identifier) + number_literal) ))) ;) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" identifier = identifier) ;) (goto_statement "goto LAB_000a04f4;" goto statement_identifier ;) })) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,5);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,5)" identifier = (call_expression "CONCAT31(local_3c._1_3_,5)" identifier (argument_list "(local_3c._1_3_,5)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0,piVar20,piVar20);" (call_expression "FUN_000493f0(iVar19,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar19,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" identifier (argument_list "(local_c0)" ( identifier ))) ;) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x38] = 0;" (assignment_expression "local_d0[0x38] = 0" (subscript_expression "local_d0[0x38]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x39] = 0;" (assignment_expression "local_d0[0x39] = 0" (subscript_expression "local_d0[0x39]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3a] = 0;" (assignment_expression "local_d0[0x3a] = 0" (subscript_expression "local_d0[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3b] = 0;" (assignment_expression "local_d0[0x3b] = 0" (subscript_expression "local_d0[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x3241c)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x3241c" identifier + number_literal) ))) ;) (expression_statement "iVar11 = FUN_0008d250();" (assignment_expression "iVar11 = FUN_0008d250()" identifier = (call_expression "FUN_0008d250()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(byte **)(local_d0 + 0x38) = param_2;" (assignment_expression "*(byte **)(local_d0 + 0x38) = param_2" (pointer_expression "*(byte **)(local_d0 + 0x38)" * (cast_expression "(byte **)(local_d0 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x38)" ( (binary_expression "local_d0 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }" { (expression_statement "local_c0 = FUN_00049630(iVar13);" (assignment_expression "local_c0 = FUN_00049630(iVar13)" identifier = (call_expression "FUN_00049630(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (labeled_statement "LAB_000a1b0c:\n                FUN_00049630(iVar19);" statement_identifier : (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;)) (goto_statement "goto LAB_000a191e;" goto statement_identifier ;) })) }))) (if_statement "if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }" if (parenthesized_expression "(*(int *)(param_2 + 0x30) != 0)" ( (binary_expression "*(int *)(param_2 + 0x30) != 0" (pointer_expression "*(int *)(param_2 + 0x30)" * (cast_expression "(int *)(param_2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00054000();\n            }" { (expression_statement "FUN_00054000();" (call_expression "FUN_00054000()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int **)(param_2 + 0x30) = piVar14;" (assignment_expression "*(int **)(param_2 + 0x30) = piVar14" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" else (compound_statement "{\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" { (labeled_statement "LAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);" statement_identifier : (expression_statement "FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);" (call_expression "FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP)" identifier (argument_list "(piVar20,&UNK_00034d93 + unaff_EBP)" ( identifier , (binary_expression "&UNK_00034d93 + unaff_EBP" (pointer_expression "&UNK_00034d93" & identifier) + identifier) ))) ;)) }))) (if_statement "if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }" if (parenthesized_expression "(piVar20[9] == 0)" ( (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }" { (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = (byte *)0x0;" (assignment_expression "local_d0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" statement_identifier : (if_statement "if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" if (parenthesized_expression "((param_2[4] & 0x20) != 0)" ( (binary_expression "(param_2[4] & 0x20) != 0" (parenthesized_expression "(param_2[4] & 0x20)" ( (binary_expression "param_2[4] & 0x20" (subscript_expression "param_2[4]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" { (expression_statement "iVar19 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar19 = **(int **)(param_2 + 0x1c)" identifier = (pointer_expression "**(int **)(param_2 + 0x1c)" * (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "piVar20 = (int *)FUN_0002fcc0();" (assignment_expression "piVar20 = (int *)FUN_0002fcc0()" identifier = (cast_expression "(int *)FUN_0002fcc0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002fcc0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_d0 = (byte *)0x7;\n            }" { (expression_statement "local_d0 = (byte *)0x7;" (assignment_expression "local_d0 = (byte *)0x7" identifier = (cast_expression "(byte *)0x7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" else (compound_statement "{\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" { (if_statement "if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);" do (compound_statement "{\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                }" { (expression_statement "iVar21 = FUN_0004ff90(iVar29);" (assignment_expression "iVar21 = FUN_0004ff90(iVar29)" identifier = (call_expression "FUN_0004ff90(iVar29)" identifier (argument_list "(iVar29)" ( identifier )))) ;) (expression_statement "piVar20[iVar29 + 5] = iVar21;" (assignment_expression "piVar20[iVar29 + 5] = iVar21" (subscript_expression "piVar20[iVar29 + 5]" identifier [ (binary_expression "iVar29 + 5" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }" { (expression_statement "piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);" (assignment_expression "piVar20[iVar29 + 5] = *(int *)(iVar15 + 8)" (subscript_expression "piVar20[iVar29 + 5]" identifier [ (binary_expression "iVar29 + 5" identifier + number_literal) ]) = (pointer_expression "*(int *)(iVar15 + 8)" * (cast_expression "(int *)(iVar15 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 8)" ( (binary_expression "iVar15 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != iVar29)" ( (binary_expression "iVar19 != iVar29" identifier != identifier) )) ;) })) (do_statement "do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);" do (compound_statement "{\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (while_statement "while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" while (parenthesized_expression "(-1 < *(int *)(param_2 + iVar15 * 4 + 0x14))" ( (binary_expression "-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)" number_literal < (pointer_expression "*(int *)(param_2 + iVar15 * 4 + 0x14)" * (cast_expression "(int *)(param_2 + iVar15 * 4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15 * 4 + 0x14)" ( (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) + number_literal) ))))) )) (compound_statement "{\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" { (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" if (parenthesized_expression "(*(char *)(*local_c8 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*local_c8 + 0x4d) == '\0'" (pointer_expression "*(char *)(*local_c8 + 0x4d)" * (cast_expression "(char *)(*local_c8 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_c8 + 0x4d)" ( (binary_expression "*local_c8 + 0x4d" (pointer_expression "*local_c8" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }" { (expression_statement "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;" (assignment_expression "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19" (pointer_expression "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" * (cast_expression "(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" ( (binary_expression "local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8" (binary_expression "local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (subscript_expression "local_c8[0x19]" identifier [ number_literal ]) + (binary_expression "*(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (pointer_expression "*(int *)(param_2 + iVar15 * 4 + 0x14)" * (cast_expression "(int *)(param_2 + iVar15 * 4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15 * 4 + 0x14)" ( (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) + number_literal) )))) * number_literal)) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" else (compound_statement "{\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" { (expression_statement "*(int *)(unaff_EBP + 0x6782b) = iVar19;" (assignment_expression "*(int *)(unaff_EBP + 0x6782b) = iVar19" (pointer_expression "*(int *)(unaff_EBP + 0x6782b)" * (cast_expression "(int *)(unaff_EBP + 0x6782b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x6782b)" ( (binary_expression "unaff_EBP + 0x6782b" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*piVar20 = *piVar20 + 1;" (assignment_expression "*piVar20 = *piVar20 + 1" (pointer_expression "*piVar20" * identifier) = (binary_expression "*piVar20 + 1" (pointer_expression "*piVar20" * identifier) + number_literal)) ;) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "pbVar3 = param_2 + iVar15 * 4 + 0x14;" (assignment_expression "pbVar3 = param_2 + iVar15 * 4 + 0x14" identifier = (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) + number_literal)) ;) (expression_statement "pbVar3[0] = 0xff;" (assignment_expression "pbVar3[0] = 0xff" (subscript_expression "pbVar3[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[1] = 0xff;" (assignment_expression "pbVar3[1] = 0xff" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[2] = 0xff;" (assignment_expression "pbVar3[2] = 0xff" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[3] = 0xff;" (assignment_expression "pbVar3[3] = 0xff" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar15 == 1) break;" if (parenthesized_expression "(iVar15 == 1)" ( (binary_expression "iVar15 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" identifier = number_literal) ;) })) (expression_statement "param_2 = *(byte **)(param_2 + 0x34);" (assignment_expression "param_2 = *(byte **)(param_2 + 0x34)" identifier = (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar19 = *piVar20;" (assignment_expression "iVar19 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "*piVar20 = iVar19 + -1;" (assignment_expression "*piVar20 = iVar19 + -1" (pointer_expression "*piVar20" * identifier) = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }" if (parenthesized_expression "(iVar19 + -1 == 0)" ( (binary_expression "iVar19 + -1 == 0" (binary_expression "iVar19 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                FUN_00023410();\n              }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) }))) }))) (labeled_statement "LAB_000a028c:\n          param_3[3] = local_68;" statement_identifier : (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_c0 != 0) {\n            FUN_00053bb0();\n          }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00053bb0();\n          }" { (expression_statement "FUN_00053bb0();" (call_expression "FUN_00053bb0()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" else (compound_statement "{\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" { (expression_statement "iVar29 = *(int *)(param_2 + 0x3c);" (assignment_expression "iVar29 = *(int *)(param_2 + 0x3c)" identifier = (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" if (parenthesized_expression "(*(int *)(param_2 + 0x44) != 0)" ( (binary_expression "*(int *)(param_2 + 0x44) != 0" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" { (if_statement "if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;" if (parenthesized_expression "((uVar12 & 0x2000) != 0)" ( (binary_expression "(uVar12 & 0x2000) != 0" (parenthesized_expression "(uVar12 & 0x2000)" ( (binary_expression "uVar12 & 0x2000" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000a0251;" goto statement_identifier ;)) (goto_statement "goto LAB_0009ff43;" goto statement_identifier ;) })) (expression_statement "pbVar3 = *(byte **)(param_2 + 0x34);" (assignment_expression "pbVar3 = *(byte **)(param_2 + 0x34)" identifier = (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = param_2;" (assignment_expression "local_d0 = param_2" identifier = identifier) ;) (if_statement "if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" if (parenthesized_expression "(pbVar3 == (byte *)0x0)" ( (binary_expression "pbVar3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }" { (labeled_statement "LAB_000a122a:\n          local_cc = (int *)0x1;" statement_identifier : (expression_statement "local_cc = (int *)0x1;" (assignment_expression "local_cc = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar19 = unaff_EBP + 0x327e3;" (assignment_expression "iVar19 = unaff_EBP + 0x327e3" identifier = (binary_expression "unaff_EBP + 0x327e3" identifier + number_literal)) ;) }) (else_clause "else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" else (compound_statement "{\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" { (expression_statement "local_cc = (int *)0x1;" (assignment_expression "local_cc = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" identifier = identifier) ;) (do_statement "do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);" do (compound_statement "{\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          }" { (expression_statement "local_d0 = pbVar26;" (assignment_expression "local_d0 = pbVar26" identifier = identifier) ;) (expression_statement "local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));" (assignment_expression "local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0))" identifier = (cast_expression "(int *)((int)local_cc + (uint)(iVar29 == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_cc + (uint)(iVar29 == 0))" ( (binary_expression "(int)local_cc + (uint)(iVar29 == 0)" (cast_expression "(int)local_cc" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(iVar29 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )))) )))) ;) (if_statement "if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }" if (parenthesized_expression "(*(int *)(local_d0 + 0x44) != 0)" ( (binary_expression "*(int *)(local_d0 + 0x44) != 0" (pointer_expression "*(int *)(local_d0 + 0x44)" * (cast_expression "(int *)(local_d0 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0x44)" ( (binary_expression "local_d0 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }" { (if_statement "if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;" if (parenthesized_expression "((uVar12 & 0x2000) == 0)" ( (binary_expression "(uVar12 & 0x2000) == 0" (parenthesized_expression "(uVar12 & 0x2000)" ( (binary_expression "uVar12 & 0x2000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0009ff43;" goto statement_identifier ;)) (expression_statement "piVar28 = *(int **)(param_2 + 0x20);" (assignment_expression "piVar28 = *(int **)(param_2 + 0x20)" identifier = (pointer_expression "*(int **)(param_2 + 0x20)" * (cast_expression "(int **)(param_2 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_c0 = **(undefined4 **)(param_2 + 0x1c);" (assignment_expression "local_c0 = **(undefined4 **)(param_2 + 0x1c)" identifier = (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" * (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" * (cast_expression "(undefined4 **)(param_2 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "local_d0 = pbVar3;" (assignment_expression "local_d0 = pbVar3" identifier = identifier) ;) (goto_statement "goto LAB_000a035e;" goto statement_identifier ;) })) (expression_statement "pbVar26 = *(byte **)(local_d0 + 0x34);" (assignment_expression "pbVar26 = *(byte **)(local_d0 + 0x34)" identifier = (pointer_expression "*(byte **)(local_d0 + 0x34)" * (cast_expression "(byte **)(local_d0 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x34)" ( (binary_expression "local_d0 + 0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(byte **)(local_d0 + 0x34) != (byte *)0x0)" ( (binary_expression "*(byte **)(local_d0 + 0x34) != (byte *)0x0" (pointer_expression "*(byte **)(local_d0 + 0x34)" * (cast_expression "(byte **)(local_d0 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x34)" ( (binary_expression "local_d0 + 0x34" identifier + number_literal) )))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar19 = unaff_EBP + 0x329e1;" (assignment_expression "iVar19 = unaff_EBP + 0x329e1" identifier = (binary_expression "unaff_EBP + 0x329e1" identifier + number_literal)) ;) (if_statement "if (local_cc == (int *)0x1) goto LAB_000a122a;" if (parenthesized_expression "(local_cc == (int *)0x1)" ( (binary_expression "local_cc == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a122a;" goto statement_identifier ;)) }))) (expression_statement "FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);" (call_expression "FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19)" identifier (argument_list "(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32405" identifier + number_literal) , identifier , identifier ))) ;) (if_statement "if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }" { (do_statement "do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);" do (compound_statement "{\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          }" { (expression_statement "FUN_000964a0(0,0,&local_74,1,1);" (call_expression "FUN_000964a0(0,0,&local_74,1,1)" identifier (argument_list "(0,0,&local_74,1,1)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , number_literal , number_literal ))) ;) (expression_statement "*(short *)(local_d0 + 2) = (short)local_cc;" (assignment_expression "*(short *)(local_d0 + 2) = (short)local_cc" (pointer_expression "*(short *)(local_d0 + 2)" * (cast_expression "(short *)(local_d0 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 2)" ( (binary_expression "local_d0 + 2" identifier + number_literal) )))) = (cast_expression "(short)local_cc" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "local_d0 = *(byte **)(local_d0 + 0x38);" (assignment_expression "local_d0 = *(byte **)(local_d0 + 0x38)" identifier = (pointer_expression "*(byte **)(local_d0 + 0x38)" * (cast_expression "(byte **)(local_d0 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x38)" ( (binary_expression "local_d0 + 0x38" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(local_d0 != (byte *)0x0)" ( (binary_expression "local_d0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" else (compound_statement "{\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" { (expression_statement "FUN_000964a0(0,0,&local_74,1,1);" (call_expression "FUN_000964a0(0,0,&local_74,1,1)" identifier (argument_list "(0,0,&local_74,1,1)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , number_literal , number_literal ))) ;) }))) }))) (expression_statement "local_d0 = (byte *)0x0;" (assignment_expression "local_d0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "cVar6 = *pcVar25;" (assignment_expression "cVar6 = *pcVar25" identifier = (pointer_expression "*pcVar25" * identifier)) ;) (if_statement "if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" if (parenthesized_expression "(cVar6 == -0x7a)" ( (binary_expression "cVar6 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e87;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e87;" (assignment_expression "iVar19 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) }) (else_clause "else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" else (if_statement "if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" if (parenthesized_expression "(cVar6 == -0x79)" ( (binary_expression "cVar6 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e7d;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar19 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" else (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar19 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) (if_statement "if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }" if (parenthesized_expression "(cVar6 == -0x7b)" ( (binary_expression "cVar6 == -0x7b" identifier == number_literal) )) (compound_statement "{\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }" { (expression_statement "iVar19 = unaff_EBP + 0x31e73;" (assignment_expression "iVar19 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (expression_statement "puVar10 = (undefined *)(unaff_EBP + 0x323ff);" (assignment_expression "puVar10 = (undefined *)(unaff_EBP + 0x323ff)" identifier = (cast_expression "(undefined *)(unaff_EBP + 0x323ff)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x323ff)" ( (binary_expression "unaff_EBP + 0x323ff" identifier + number_literal) )))) ;) (goto_statement "goto LAB_0009fe40;" goto statement_identifier ;) })) }))))) (expression_statement "puVar10 = (undefined *)(unaff_EBP + 0x323ff);" (assignment_expression "puVar10 = (undefined *)(unaff_EBP + 0x323ff)" identifier = (cast_expression "(undefined *)(unaff_EBP + 0x323ff)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x323ff)" ( (binary_expression "unaff_EBP + 0x323ff" identifier + number_literal) )))) ;) }) (else_clause "else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" else (compound_statement "{\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" { (expression_statement "cVar6 = *pcVar25;" (assignment_expression "cVar6 = *pcVar25" identifier = (pointer_expression "*pcVar25" * identifier)) ;) (if_statement "if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" if (parenthesized_expression "(cVar6 == -0x7a)" ( (binary_expression "cVar6 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e87;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e87;" (assignment_expression "iVar19 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) }) (else_clause "else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" else (if_statement "if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" if (parenthesized_expression "(cVar6 == -0x79)" ( (binary_expression "cVar6 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e7d;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar19 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) ;) }) (else_clause "else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" else (compound_statement "{\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" { (if_statement "if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }" if (parenthesized_expression "(cVar6 != -0x7b)" ( (binary_expression "cVar6 != -0x7b" identifier != number_literal) )) (compound_statement "{\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }" { (expression_statement "iVar19 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar19 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) (expression_statement "puVar10 = &UNK_0003228a + unaff_EBP;" (assignment_expression "puVar10 = &UNK_0003228a + unaff_EBP" identifier = (binary_expression "&UNK_0003228a + unaff_EBP" (pointer_expression "&UNK_0003228a" & identifier) + identifier)) ;) (goto_statement "goto LAB_0009fe40;" goto statement_identifier ;) })) (expression_statement "iVar19 = unaff_EBP + 0x31e73;" (assignment_expression "iVar19 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) }))))) (expression_statement "puVar10 = &UNK_0003228a + unaff_EBP;" (assignment_expression "puVar10 = &UNK_0003228a + unaff_EBP" identifier = (binary_expression "&UNK_0003228a + unaff_EBP" (pointer_expression "&UNK_0003228a" & identifier) + identifier)) ;) }))) (labeled_statement "LAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);" statement_identifier : (expression_statement "FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);" (call_expression "FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19)" identifier (argument_list "(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19)" ( identifier , (binary_expression "&UNK_00034d67 + unaff_EBP" (pointer_expression "&UNK_00034d67" & identifier) + identifier) , identifier , identifier ))) ;)) (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0 = (byte *)0x1;" (assignment_expression "local_d0 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return (uint)local_d0;\n  }" { (return_statement "return (uint)local_d0;" return (cast_expression "(uint)local_d0" ( (type_descriptor "uint" type_identifier) ) identifier) ;) }))) comment (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n\nint __regparm3 multiSelect(Parse *pParse,Select *p,SelectDest *pDest)\n\n{\n  u32 *puVar1;\n  int iVar2;\n  sqlite3 *psVar3;\n  undefined1 *puVar4;\n  Select *pSVar5;\n  uint uVar6;\n  short sVar7;\n  undefined1 *puVar8;\n  u8 uVar9;\n  byte bVar10;\n  LogEst LVar11;\n  short sVar12;\n  char *pcVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  Expr *pEVar17;\n  int *zP4;\n  ExprList *pEVar18;\n  CollSeq *pCVar19;\n  SelectDest *pSVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  u32 uVar24;\n  int iVar25;\n  int iVar26;\n  Op *pOVar27;\n  KeyInfo *pKVar28;\n  Parse *iContinue;\n  Parse *pPVar29;\n  Vdbe *pVVar30;\n  uint uVar31;\n  short sVar32;\n  DistinctCtx *pDVar33;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  ExprList_item *pEVar34;\n  Select *pSVar35;\n  uint uVar36;\n  Select *pSVar37;\n  SrcList *pSVar38;\n  Select *pSVar39;\n  SortCtx *pSVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  char *in_stack_ffffff18;\n  int iVar42;\n  int p3;\n  SelectDest *pSVar43;\n  char *pcVar44;\n  char *in_stack_ffffff1c;\n  char *in_stack_ffffff20;\n  Parse *pPVar45;\n  Select *in_stack_ffffff24;\n  undefined4 in_stack_ffffff28;\n  Select *local_d0;\n  ExprList *local_cc;\n  Vdbe *local_c8;\n  Vdbe *local_c4;\n  Select *local_c0;\n  uint local_bc;\n  int local_b4;\n  KeyInfo *local_b0;\n  SelectDest *local_a8;\n  int local_a0;\n  int local_9c;\n  KeyInfo *local_98;\n  int local_94;\n  int local_90;\n  int local_88;\n  SelectDest dest;\n  SelectDest destA;\n  int nLimit;\n  uint local_38;\n  int local_34;\n  int local_30;\n  undefined1 local_2c [20];\n  Token x;\n  \n  x.n = 0x9fdad;\n  pSVar39 = p->pPrior;\n  psVar3 = pParse->db;\n  local_2c._12_4_ = *(u32 *)(in_GS_OFFSET + 0x14);\n  dest.eDest = pDest->eDest;\n  dest._1_3_ = *(undefined3 *)&pDest->field_0x1;\n  dest.iSDParm = pDest->iSDParm;\n  dest.iSDParm2 = pDest->iSDParm2;\n  dest.iSdst = pDest->iSdst;\n  dest.nSdst = pDest->nSdst;\n  dest.zAffSdst = pDest->zAffSdst;\n  dest.pOrderBy = pDest->pOrderBy;\n  if (pSVar39->pOrderBy == (ExprList *)0x0) {\n    if (pSVar39->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }\n    pcVar13 = "LIMIT";\n  }\n  else {\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }\n    pcVar13 = "ORDER BY";\n  }\nLAB_0009fe40:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);\n  pDest->iSdst = dest.iSdst;\n  pDest->nSdst = dest.nSdst;\n  local_d0 = (Select *)0x1;\nLAB_0009fe71:\n  if (local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "int __regparm3 multiSelect(Parse *pParse,Select *p,SelectDest *pDest)\n\n{\n  u32 *puVar1;\n  int iVar2;\n  sqlite3 *psVar3;\n  undefined1 *puVar4;\n  Select *pSVar5;\n  uint uVar6;\n  short sVar7;\n  undefined1 *puVar8;\n  u8 uVar9;\n  byte bVar10;\n  LogEst LVar11;\n  short sVar12;\n  char *pcVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  Expr *pEVar17;\n  int *zP4;\n  ExprList *pEVar18;\n  CollSeq *pCVar19;\n  SelectDest *pSVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  u32 uVar24;\n  int iVar25;\n  int iVar26;\n  Op *pOVar27;\n  KeyInfo *pKVar28;\n  Parse *iContinue;\n  Parse *pPVar29;\n  Vdbe *pVVar30;\n  uint uVar31;\n  short sVar32;\n  DistinctCtx *pDVar33;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  ExprList_item *pEVar34;\n  Select *pSVar35;\n  uint uVar36;\n  Select *pSVar37;\n  SrcList *pSVar38;\n  Select *pSVar39;\n  SortCtx *pSVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  char *in_stack_ffffff18;\n  int iVar42;\n  int p3;\n  SelectDest *pSVar43;\n  char *pcVar44;\n  char *in_stack_ffffff1c;\n  char *in_stack_ffffff20;\n  Parse *pPVar45;\n  Select *in_stack_ffffff24;\n  undefined4 in_stack_ffffff28;\n  Select *local_d0;\n  ExprList *local_cc;\n  Vdbe *local_c8;\n  Vdbe *local_c4;\n  Select *local_c0;\n  uint local_bc;\n  int local_b4;\n  KeyInfo *local_b0;\n  SelectDest *local_a8;\n  int local_a0;\n  int local_9c;\n  KeyInfo *local_98;\n  int local_94;\n  int local_90;\n  int local_88;\n  SelectDest dest;\n  SelectDest destA;\n  int nLimit;\n  uint local_38;\n  int local_34;\n  int local_30;\n  undefined1 local_2c [20];\n  Token x;\n  \n  x.n = 0x9fdad;\n  pSVar39 = p->pPrior;\n  psVar3 = pParse->db;\n  local_2c._12_4_ = *(u32 *)(in_GS_OFFSET + 0x14);\n  dest.eDest = pDest->eDest;\n  dest._1_3_ = *(undefined3 *)&pDest->field_0x1;\n  dest.iSDParm = pDest->iSDParm;\n  dest.iSDParm2 = pDest->iSDParm2;\n  dest.iSdst = pDest->iSdst;\n  dest.nSdst = pDest->nSdst;\n  dest.zAffSdst = pDest->zAffSdst;\n  dest.pOrderBy = pDest->pOrderBy;\n  if (pSVar39->pOrderBy == (ExprList *)0x0) {\n    if (pSVar39->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }\n    pcVar13 = "LIMIT";\n  }\n  else {\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }\n    pcVar13 = "ORDER BY";\n  }\nLAB_0009fe40:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);\n  pDest->iSdst = dest.iSdst;\n  pDest->nSdst = dest.nSdst;\n  local_d0 = (Select *)0x1;\nLAB_0009fe71:\n  if (local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "multiSelect(Parse *pParse,Select *p,SelectDest *pDest)" identifier (parameter_list "(Parse *pParse,Select *p,SelectDest *pDest)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Select *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "SelectDest *pDest" type_identifier (pointer_declarator "*pDest" * identifier)) ))) (compound_statement "{\n  u32 *puVar1;\n  int iVar2;\n  sqlite3 *psVar3;\n  undefined1 *puVar4;\n  Select *pSVar5;\n  uint uVar6;\n  short sVar7;\n  undefined1 *puVar8;\n  u8 uVar9;\n  byte bVar10;\n  LogEst LVar11;\n  short sVar12;\n  char *pcVar13;\n  int iVar14;\n  uint uVar15;\n  int iVar16;\n  Expr *pEVar17;\n  int *zP4;\n  ExprList *pEVar18;\n  CollSeq *pCVar19;\n  SelectDest *pSVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  u32 uVar24;\n  int iVar25;\n  int iVar26;\n  Op *pOVar27;\n  KeyInfo *pKVar28;\n  Parse *iContinue;\n  Parse *pPVar29;\n  Vdbe *pVVar30;\n  uint uVar31;\n  short sVar32;\n  DistinctCtx *pDVar33;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  ExprList_item *pEVar34;\n  Select *pSVar35;\n  uint uVar36;\n  Select *pSVar37;\n  SrcList *pSVar38;\n  Select *pSVar39;\n  SortCtx *pSVar40;\n  int in_GS_OFFSET;\n  bool bVar41;\n  char *in_stack_ffffff18;\n  int iVar42;\n  int p3;\n  SelectDest *pSVar43;\n  char *pcVar44;\n  char *in_stack_ffffff1c;\n  char *in_stack_ffffff20;\n  Parse *pPVar45;\n  Select *in_stack_ffffff24;\n  undefined4 in_stack_ffffff28;\n  Select *local_d0;\n  ExprList *local_cc;\n  Vdbe *local_c8;\n  Vdbe *local_c4;\n  Select *local_c0;\n  uint local_bc;\n  int local_b4;\n  KeyInfo *local_b0;\n  SelectDest *local_a8;\n  int local_a0;\n  int local_9c;\n  KeyInfo *local_98;\n  int local_94;\n  int local_90;\n  int local_88;\n  SelectDest dest;\n  SelectDest destA;\n  int nLimit;\n  uint local_38;\n  int local_34;\n  int local_30;\n  undefined1 local_2c [20];\n  Token x;\n  \n  x.n = 0x9fdad;\n  pSVar39 = p->pPrior;\n  psVar3 = pParse->db;\n  local_2c._12_4_ = *(u32 *)(in_GS_OFFSET + 0x14);\n  dest.eDest = pDest->eDest;\n  dest._1_3_ = *(undefined3 *)&pDest->field_0x1;\n  dest.iSDParm = pDest->iSDParm;\n  dest.iSDParm2 = pDest->iSDParm2;\n  dest.iSdst = pDest->iSdst;\n  dest.nSdst = pDest->nSdst;\n  dest.zAffSdst = pDest->zAffSdst;\n  dest.pOrderBy = pDest->pOrderBy;\n  if (pSVar39->pOrderBy == (ExprList *)0x0) {\n    if (pSVar39->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }\n    pcVar13 = "LIMIT";\n  }\n  else {\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }\n    pcVar13 = "ORDER BY";\n  }\nLAB_0009fe40:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);\n  pDest->iSdst = dest.iSdst;\n  pDest->nSdst = dest.nSdst;\n  local_d0 = (Select *)0x1;\nLAB_0009fe71:\n  if (local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "u32 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "sqlite3 *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "Select *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "u8 uVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "LogEst LVar11;" type_identifier identifier ;) (declaration "short sVar12;" (sized_type_specifier "short" short) identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "Expr *pEVar17;" type_identifier (pointer_declarator "*pEVar17" * identifier) ;) (declaration "int *zP4;" primitive_type (pointer_declarator "*zP4" * identifier) ;) (declaration "ExprList *pEVar18;" type_identifier (pointer_declarator "*pEVar18" * identifier) ;) (declaration "CollSeq *pCVar19;" type_identifier (pointer_declarator "*pCVar19" * identifier) ;) (declaration "SelectDest *pSVar20;" type_identifier (pointer_declarator "*pSVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "u32 uVar24;" type_identifier identifier ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "Op *pOVar27;" type_identifier (pointer_declarator "*pOVar27" * identifier) ;) (declaration "KeyInfo *pKVar28;" type_identifier (pointer_declarator "*pKVar28" * identifier) ;) (declaration "Parse *iContinue;" type_identifier (pointer_declarator "*iContinue" * identifier) ;) (declaration "Parse *pPVar29;" type_identifier (pointer_declarator "*pPVar29" * identifier) ;) (declaration "Vdbe *pVVar30;" type_identifier (pointer_declarator "*pVVar30" * identifier) ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "short sVar32;" (sized_type_specifier "short" short) identifier ;) (declaration "DistinctCtx *pDVar33;" type_identifier (pointer_declarator "*pDVar33" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int extraout_ECX_00;" primitive_type identifier ;) (declaration "ExprList_item *pEVar34;" type_identifier (pointer_declarator "*pEVar34" * identifier) ;) (declaration "Select *pSVar35;" type_identifier (pointer_declarator "*pSVar35" * identifier) ;) (declaration "uint uVar36;" type_identifier identifier ;) (declaration "Select *pSVar37;" type_identifier (pointer_declarator "*pSVar37" * identifier) ;) (declaration "SrcList *pSVar38;" type_identifier (pointer_declarator "*pSVar38" * identifier) ;) (declaration "Select *pSVar39;" type_identifier (pointer_declarator "*pSVar39" * identifier) ;) (declaration "SortCtx *pSVar40;" type_identifier (pointer_declarator "*pSVar40" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar41;" primitive_type identifier ;) (declaration "char *in_stack_ffffff18;" primitive_type (pointer_declarator "*in_stack_ffffff18" * identifier) ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "int p3;" primitive_type identifier ;) (declaration "SelectDest *pSVar43;" type_identifier (pointer_declarator "*pSVar43" * identifier) ;) (declaration "char *pcVar44;" primitive_type (pointer_declarator "*pcVar44" * identifier) ;) (declaration "char *in_stack_ffffff1c;" primitive_type (pointer_declarator "*in_stack_ffffff1c" * identifier) ;) (declaration "char *in_stack_ffffff20;" primitive_type (pointer_declarator "*in_stack_ffffff20" * identifier) ;) (declaration "Parse *pPVar45;" type_identifier (pointer_declarator "*pPVar45" * identifier) ;) (declaration "Select *in_stack_ffffff24;" type_identifier (pointer_declarator "*in_stack_ffffff24" * identifier) ;) (declaration "undefined4 in_stack_ffffff28;" type_identifier identifier ;) (declaration "Select *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "ExprList *local_cc;" type_identifier (pointer_declarator "*local_cc" * identifier) ;) (declaration "Vdbe *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "Vdbe *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "Select *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "KeyInfo *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "SelectDest *local_a8;" type_identifier (pointer_declarator "*local_a8" * identifier) ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "KeyInfo *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "SelectDest dest;" type_identifier identifier ;) (declaration "SelectDest destA;" type_identifier identifier ;) (declaration "int nLimit;" primitive_type identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [20];" type_identifier (array_declarator "local_2c [20]" identifier [ number_literal ]) ;) (declaration "Token x;" type_identifier identifier ;) (expression_statement "x.n = 0x9fdad;" (assignment_expression "x.n = 0x9fdad" (field_expression "x.n" identifier . field_identifier) = number_literal) ;) (expression_statement "pSVar39 = p->pPrior;" (assignment_expression "pSVar39 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "psVar3 = pParse->db;" (assignment_expression "psVar3 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "local_2c._12_4_ = *(u32 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_2c._12_4_ = *(u32 *)(in_GS_OFFSET + 0x14)" (field_expression "local_2c._12_4_" identifier . field_identifier) = (pointer_expression "*(u32 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(u32 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "dest.eDest = pDest->eDest;" (assignment_expression "dest.eDest = pDest->eDest" (field_expression "dest.eDest" identifier . field_identifier) = (field_expression "pDest->eDest" identifier -> field_identifier)) ;) (expression_statement "dest._1_3_ = *(undefined3 *)&pDest->field_0x1;" (assignment_expression "dest._1_3_ = *(undefined3 *)&pDest->field_0x1" (field_expression "dest._1_3_" identifier . field_identifier) = (pointer_expression "*(undefined3 *)&pDest->field_0x1" * (cast_expression "(undefined3 *)&pDest->field_0x1" ( (type_descriptor "undefined3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pDest->field_0x1" & (field_expression "pDest->field_0x1" identifier -> field_identifier))))) ;) (expression_statement "dest.iSDParm = pDest->iSDParm;" (assignment_expression "dest.iSDParm = pDest->iSDParm" (field_expression "dest.iSDParm" identifier . field_identifier) = (field_expression "pDest->iSDParm" identifier -> field_identifier)) ;) (expression_statement "dest.iSDParm2 = pDest->iSDParm2;" (assignment_expression "dest.iSDParm2 = pDest->iSDParm2" (field_expression "dest.iSDParm2" identifier . field_identifier) = (field_expression "pDest->iSDParm2" identifier -> field_identifier)) ;) (expression_statement "dest.iSdst = pDest->iSdst;" (assignment_expression "dest.iSdst = pDest->iSdst" (field_expression "dest.iSdst" identifier . field_identifier) = (field_expression "pDest->iSdst" identifier -> field_identifier)) ;) (expression_statement "dest.nSdst = pDest->nSdst;" (assignment_expression "dest.nSdst = pDest->nSdst" (field_expression "dest.nSdst" identifier . field_identifier) = (field_expression "pDest->nSdst" identifier -> field_identifier)) ;) (expression_statement "dest.zAffSdst = pDest->zAffSdst;" (assignment_expression "dest.zAffSdst = pDest->zAffSdst" (field_expression "dest.zAffSdst" identifier . field_identifier) = (field_expression "pDest->zAffSdst" identifier -> field_identifier)) ;) (expression_statement "dest.pOrderBy = pDest->pOrderBy;" (assignment_expression "dest.pOrderBy = pDest->pOrderBy" (field_expression "dest.pOrderBy" identifier . field_identifier) = (field_expression "pDest->pOrderBy" identifier -> field_identifier)) ;) (if_statement "if (pSVar39->pOrderBy == (ExprList *)0x0) {\n    if (pSVar39->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }\n    pcVar13 = "LIMIT";\n  }\n  else {\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }\n    pcVar13 = "ORDER BY";\n  }" if (parenthesized_expression "(pSVar39->pOrderBy == (ExprList *)0x0)" ( (binary_expression "pSVar39->pOrderBy == (ExprList *)0x0" (field_expression "pSVar39->pOrderBy" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pSVar39->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }\n    pcVar13 = "LIMIT";\n  }" { (if_statement "if (pSVar39->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }" if (parenthesized_expression "(pSVar39->pLimit == (Expr *)0x0)" ( (binary_expression "pSVar39->pLimit == (Expr *)0x0" (field_expression "pSVar39->pLimit" identifier -> field_identifier) == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }\n      uVar15 = p->selFlags;\n      if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_0009fe71;\n    }" { (expression_statement "local_c8 = pParse->pVdbe;" (assignment_expression "local_c8 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }" if (parenthesized_expression "(local_c8 == (Vdbe *)0x0)" ( (binary_expression "local_c8 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        in_stack_ffffff20 = (char *)0xa0c89;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }" { (expression_statement "in_stack_ffffff20 = (char *)0xa0c89;" (assignment_expression "in_stack_ffffff20 = (char *)0xa0c89" identifier = (cast_expression "(char *)0xa0c89" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c8 = sqlite3GetVdbe(pParse);" (assignment_expression "local_c8 = sqlite3GetVdbe(pParse)" identifier = (call_expression "sqlite3GetVdbe(pParse)" identifier (argument_list "(pParse)" ( identifier )))) ;) })) (if_statement "if (dest.eDest == '\f') {\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }" if (parenthesized_expression "(dest.eDest == '\f')" ( (binary_expression "dest.eDest == '\f'" (field_expression "dest.eDest" identifier . field_identifier) == (char_literal "'\f'" ' escape_sequence ')) )) (compound_statement "{\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);\n        dest.eDest = '\x0e';\n      }" { (expression_statement "sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18);" (call_expression "sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18)" identifier (argument_list "(local_c8,100,dest.iSDParm,p->pEList->nExpr,(int)in_stack_ffffff18)" ( identifier , number_literal , (field_expression "dest.iSDParm" identifier . field_identifier) , (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier) , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "dest.eDest = '\x0e';" (assignment_expression "dest.eDest = '\x0e'" (field_expression "dest.eDest" identifier . field_identifier) = (char_literal "'\x0e'" ' escape_sequence ')) ;) })) (expression_statement "uVar15 = p->selFlags;" (assignment_expression "uVar15 = p->selFlags" identifier = (field_expression "p->selFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar15 & 0x400) == 0) {\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }" if (parenthesized_expression "((uVar15 & 0x400) == 0)" ( (binary_expression "(uVar15 & 0x400) == 0" (parenthesized_expression "(uVar15 & 0x400)" ( (binary_expression "uVar15 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }\n        pSVar38 = p->pSrc;\n        local_c0 = (Select *)p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }\n      }" { (if_statement "if ((uVar15 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }" if (parenthesized_expression "((uVar15 & 0x2000) == 0)" ( (binary_expression "(uVar15 & 0x2000) == 0" (parenthesized_expression "(uVar15 & 0x2000)" ( (binary_expression "uVar15 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;\n          if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }\n          if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar9 = p->op;\n          if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_0009fe71;\n        }" { (labeled_statement "LAB_0009ff43:\n          local_b0 = (KeyInfo *)p->pOrderBy;" statement_identifier : (expression_statement "local_b0 = (KeyInfo *)p->pOrderBy;" (assignment_expression "local_b0 = (KeyInfo *)p->pOrderBy" identifier = (cast_expression "(KeyInfo *)p->pOrderBy" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pOrderBy" identifier -> field_identifier))) ;)) (if_statement "if (local_b0 != (KeyInfo *)0x0) {\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }" if (parenthesized_expression "(local_b0 != (KeyInfo *)0x0)" ( (binary_expression "local_b0 != (KeyInfo *)0x0" identifier != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            psVar3 = pParse->db;\n            pVVar30 = pParse->pVdbe;\n            iVar26 = pParse->nLabel + -1;\n            iVar14 = pParse->nLabel + -2;\n            pParse->nLabel = iVar14;\n            uVar15 = (uint)p->op;\n            pSVar39 = p->pPrior;\n            iVar25 = ((ExprList *)local_b0)->nExpr;\n            if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }\n            local_a8 = (SelectDest *)&nLimit;\n            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));\n            local_98 = (KeyInfo *)0x0;\n            if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }\n            p->pOrderBy = (ExprList *)local_b0;\n            pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);\n            pSVar39->pOrderBy = pEVar18;\n            if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }\n            pEVar18 = p->pOrderBy;\n            p->pPrior = (Select *)0x0;\n            pSVar39->pNext = (Select *)0x0;\n            if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }\n            if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }\n            computeLimitRegisters(pParse,p,iVar26);\n            iVar16 = p->iLimit;\n            if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }\n            p->pLimit = (Expr *)0x0;\n            destA.eDest = '\r';\n            destA.iSDParm2 = 0;\n            destA.zAffSdst = (char *)0x0;\n            destA.iSdst = 0;\n            iVar21 = pParse->nMem;\n            destA.nSdst = 0;\n            nLimit = CONCAT31(nLimit._1_3_,0xd);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            uVar36 = iVar21 + 2;\n            iVar16 = iVar21 + 1;\n            local_2c._0_4_ = 0;\n            iVar2 = iVar21 + 3;\n            iVar21 = iVar21 + 4;\n            pParse->nMem = iVar21;\n            uVar9 = p->op;\n            pSVar20 = (SelectDest *)"EXCEPT";\n            if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar16;\n            local_38 = uVar36;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);\n            pSVar39->iLimit = local_9c;\n            iVar42 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar39,&destA);\n            sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);\n            iVar22 = p->iLimit;\n            iVar42 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_90;\n            p3 = 1;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_a8);\n            p->iOffset = iVar42;\n            p->iLimit = iVar22;\n            sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);\n            pPVar45 = pVVar30->pParse;\n            pPVar45->nTempReg = '\0';\n            pPVar45->nRangeReg = 0;\n            pKVar28 = local_b0;\n            iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            local_88 = 0;\n            if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }\n            if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }\n            iVar42 = iVar26;\n            local_94 = iVar26;\n            if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }\n            if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }\n            iVar2 = pVVar30->nOp;\n            if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n            iVar21 = pVVar30->nOp + -1;\n            if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }\n            pOVar27 = (Op *)&dummy_22674;\n            if (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }\n            pOVar27->p2 = pVVar30->nOp;\n            sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);\n            sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);\n            sqlite3VdbeResolveLabel(pVVar30,iVar14);\n            iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);\n            sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);\n            iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);\n            sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);\n            if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);\n            sqlite3VdbeResolveLabel(pVVar30,iVar26);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar39;\n            pSVar39->pNext = p;\n            iVar26 = pParse->addrExplain;\n            if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }\n            pParse->addrExplain = iVar26;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_0009fe71;\n          }" { (expression_statement "psVar3 = pParse->db;" (assignment_expression "psVar3 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pVVar30 = pParse->pVdbe;" (assignment_expression "pVVar30 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (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 "iVar14 = pParse->nLabel + -2;" (assignment_expression "iVar14 = pParse->nLabel + -2" identifier = (binary_expression "pParse->nLabel + -2" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar14;" (assignment_expression "pParse->nLabel = iVar14" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar15 = (uint)p->op;" (assignment_expression "uVar15 = (uint)p->op" identifier = (cast_expression "(uint)p->op" ( (type_descriptor "uint" type_identifier) ) (field_expression "p->op" identifier -> field_identifier))) ;) (expression_statement "pSVar39 = p->pPrior;" (assignment_expression "pSVar39 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "iVar25 = ((ExprList *)local_b0)->nExpr;" (assignment_expression "iVar25 = ((ExprList *)local_b0)->nExpr" identifier = (field_expression "((ExprList *)local_b0)->nExpr" (parenthesized_expression "((ExprList *)local_b0)" ( (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (if_statement "if (((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)) {\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }" if (parenthesized_expression "(((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr))" ( (binary_expression "((uVar15 != 0x85) && (psVar3->mallocFailed == '\0')) &&\n               (local_cc = p->pEList, 0 < local_cc->nExpr)" (parenthesized_expression "((uVar15 != 0x85) && (psVar3->mallocFailed == '\0'))" ( (binary_expression "(uVar15 != 0x85) && (psVar3->mallocFailed == '\0')" (parenthesized_expression "(uVar15 != 0x85)" ( (binary_expression "uVar15 != 0x85" identifier != number_literal) )) && (parenthesized_expression "(psVar3->mallocFailed == '\0')" ( (binary_expression "psVar3->mallocFailed == '\0'" (field_expression "psVar3->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_cc = p->pEList, 0 < local_cc->nExpr)" ( (comma_expression "local_cc = p->pEList, 0 < local_cc->nExpr" (assignment_expression "local_cc = p->pEList" identifier = (field_expression "p->pEList" identifier -> field_identifier)) , (binary_expression "0 < local_cc->nExpr" number_literal < (field_expression "local_cc->nExpr" identifier -> field_identifier))) ))) )) (compound_statement "{\n              uVar36 = 1;\n              do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);\n            }" { (expression_statement "uVar36 = 1;" (assignment_expression "uVar36 = 1" identifier = number_literal) ;) (do_statement "do {\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              } while ((int)uVar36 <= local_cc->nExpr);" do (compound_statement "{\n                if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }\n                uVar36 = uVar36 + 1;\n              }" { (if_statement "if (iVar25 < 1) {\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }\n                else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }" if (parenthesized_expression "(iVar25 < 1)" ( (binary_expression "iVar25 < 1" identifier < number_literal) )) (compound_statement "{\n                  if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }\n                }" { (if_statement "if (iVar25 == 0) {\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }" if (parenthesized_expression "(iVar25 == 0)" ( (binary_expression "iVar25 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000a000e:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);\n                    if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    pEVar17->flags = pEVar17->flags | 0x400;\n                    (pEVar17->u).iValue = uVar36;\n                    local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);\n                    p->pOrderBy = (ExprList *)local_b0;\n                    if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }\n                    if (uVar9 != '\0') break;\n                    local_cc = p->pEList;\n                  }" { (labeled_statement "LAB_000a000e:\n                    nLimit = 0;" statement_identifier : (expression_statement "nLimit = 0;" (assignment_expression "nLimit = 0" identifier = number_literal) ;)) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24);" (assignment_expression "pEVar17 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24)" identifier = (call_expression "sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24)" identifier (argument_list "(psVar3,0x98,(Token *)&nLimit,(int)in_stack_ffffff24)" ( identifier , number_literal , (cast_expression "(Token *)&nLimit" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) , (cast_expression "(int)in_stack_ffffff24" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (pEVar17 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }" if (parenthesized_expression "(pEVar17 == (Expr *)0x0)" ( (binary_expression "pEVar17 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      local_d0 = (Select *)0x7;\n                      goto LAB_0009fe71;\n                    }" { (expression_statement "local_d0 = (Select *)0x7;" (assignment_expression "local_d0 = (Select *)0x7" identifier = (cast_expression "(Select *)0x7" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "pEVar17->flags = pEVar17->flags | 0x400;" (assignment_expression "pEVar17->flags = pEVar17->flags | 0x400" (field_expression "pEVar17->flags" identifier -> field_identifier) = (binary_expression "pEVar17->flags | 0x400" (field_expression "pEVar17->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "(pEVar17->u).iValue = uVar36;" (assignment_expression "(pEVar17->u).iValue = uVar36" (field_expression "(pEVar17->u).iValue" (parenthesized_expression "(pEVar17->u)" ( (field_expression "pEVar17->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17);" (assignment_expression "local_b0 = (KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17)" identifier = (cast_expression "(KeyInfo *)\n                               sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17)" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3ExprListAppend\n                                         ((Parse *)pParse->db,(ExprList *)local_b0,pEVar17)" identifier (argument_list "((Parse *)pParse->db,(ExprList *)local_b0,pEVar17)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) (expression_statement "p->pOrderBy = (ExprList *)local_b0;" (assignment_expression "p->pOrderBy = (ExprList *)local_b0" (field_expression "p->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_b0 == (KeyInfo *)0x0) {\n                      uVar9 = psVar3->mallocFailed;\n                    }\n                    else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }" if (parenthesized_expression "(local_b0 == (KeyInfo *)0x0)" ( (binary_expression "local_b0 == (KeyInfo *)0x0" identifier == (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      uVar9 = psVar3->mallocFailed;\n                    }" { (expression_statement "uVar9 = psVar3->mallocFailed;" (assignment_expression "uVar9 = psVar3->mallocFailed" identifier = (field_expression "psVar3->mallocFailed" identifier -> field_identifier)) ;) }) (else_clause "else {\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }" else (compound_statement "{\n                      ((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;\n                      uVar9 = psVar3->mallocFailed;\n                      iVar25 = iVar25 + 1;\n                    }" { (expression_statement "((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36;" (assignment_expression "((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol = (u16)uVar36" (field_expression "((ExprList *)local_b0)->a[iVar25].u.x.iOrderByCol" (field_expression "((ExprList *)local_b0)->a[iVar25].u.x" (field_expression "((ExprList *)local_b0)->a[iVar25].u" (subscript_expression "((ExprList *)local_b0)->a[iVar25]" (field_expression "((ExprList *)local_b0)->a" (parenthesized_expression "((ExprList *)local_b0)" ( (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(u16)uVar36" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (expression_statement "uVar9 = psVar3->mallocFailed;" (assignment_expression "uVar9 = psVar3->mallocFailed" identifier = (field_expression "psVar3->mallocFailed" identifier -> field_identifier)) ;) (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) }))) (if_statement "if (uVar9 != '\0') break;" if (parenthesized_expression "(uVar9 != '\0')" ( (binary_expression "uVar9 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "local_cc = p->pEList;" (assignment_expression "local_cc = p->pEList" identifier = (field_expression "p->pEList" identifier -> field_identifier)) ;) })) }) (else_clause "else if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }" else (if_statement "if (((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36) {\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }" if (parenthesized_expression "(((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36)" ( (binary_expression "((ExprList *)local_b0)->a[0].u.x.iOrderByCol != uVar36" (field_expression "((ExprList *)local_b0)->a[0].u.x.iOrderByCol" (field_expression "((ExprList *)local_b0)->a[0].u.x" (field_expression "((ExprList *)local_b0)->a[0].u" (subscript_expression "((ExprList *)local_b0)->a[0]" (field_expression "((ExprList *)local_b0)->a" (parenthesized_expression "((ExprList *)local_b0)" ( (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n                  iVar16 = 0;\n                  pEVar34 = ((ExprList *)local_b0)->a;\n                  do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);\n                }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (expression_statement "pEVar34 = ((ExprList *)local_b0)->a;" (assignment_expression "pEVar34 = ((ExprList *)local_b0)->a" identifier = (field_expression "((ExprList *)local_b0)->a" (parenthesized_expression "((ExprList *)local_b0)" ( (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (do_statement "do {\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  } while (*(ushort *)(iVar2 + 0xc) != uVar36);" do (compound_statement "{\n                    iVar16 = iVar16 + 1;\n                    if (iVar16 == iVar25) goto LAB_000a000e;\n                    iVar2 = (int)(pEVar34 + 1);\n                    pEVar34 = pEVar34 + 1;\n                  }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == iVar25) goto LAB_000a000e;" if (parenthesized_expression "(iVar16 == iVar25)" ( (binary_expression "iVar16 == iVar25" identifier == identifier) )) (goto_statement "goto LAB_000a000e;" goto statement_identifier ;)) (expression_statement "iVar2 = (int)(pEVar34 + 1);" (assignment_expression "iVar2 = (int)(pEVar34 + 1)" identifier = (cast_expression "(int)(pEVar34 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pEVar34 + 1)" ( (binary_expression "pEVar34 + 1" identifier + number_literal) )))) ;) (expression_statement "pEVar34 = pEVar34 + 1;" (assignment_expression "pEVar34 = pEVar34 + 1" identifier = (binary_expression "pEVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(ushort *)(iVar2 + 0xc) != uVar36)" ( (binary_expression "*(ushort *)(iVar2 + 0xc) != uVar36" (pointer_expression "*(ushort *)(iVar2 + 0xc)" * (cast_expression "(ushort *)(iVar2 + 0xc)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) != identifier) )) ;) })))) (expression_statement "uVar36 = uVar36 + 1;" (assignment_expression "uVar36 = uVar36 + 1" identifier = (binary_expression "uVar36 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar36 <= local_cc->nExpr)" ( (binary_expression "(int)uVar36 <= local_cc->nExpr" (cast_expression "(int)uVar36" ( (type_descriptor "int" primitive_type) ) identifier) <= (field_expression "local_cc->nExpr" identifier -> field_identifier)) )) ;) })) (expression_statement "local_a8 = (SelectDest *)&nLimit;" (assignment_expression "local_a8 = (SelectDest *)&nLimit" identifier = (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier))) ;) (expression_statement "zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));" (assignment_expression "zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24))" identifier = (cast_expression "(int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24))" identifier (argument_list "(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24))" ( identifier , (call_expression "CONCAT44(in_stack_ffffff28,in_stack_ffffff24)" identifier (argument_list "(in_stack_ffffff28,in_stack_ffffff24)" ( identifier , identifier ))) ))))) ;) (expression_statement "local_98 = (KeyInfo *)0x0;" (assignment_expression "local_98 = (KeyInfo *)0x0" identifier = (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (zP4 != (int *)0x0) {\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }" if (parenthesized_expression "(zP4 != (int *)0x0)" ( (binary_expression "zP4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *zP4 = iVar25;\n              if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);\n            }" { (expression_statement "*zP4 = iVar25;" (assignment_expression "*zP4 = iVar25" (pointer_expression "*zP4" * identifier) = identifier) ;) (if_statement "if (0 < iVar25) {\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }" if (parenthesized_expression "(0 < iVar25)" ( (binary_expression "0 < iVar25" number_literal < identifier) )) (compound_statement "{\n                iVar16 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);\n              }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                } while (iVar25 * 4 != iVar16);" do (compound_statement "{\n                  *(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;\n                  iVar16 = iVar16 + 4;\n                }" { (expression_statement "*(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1;" (assignment_expression "*(uint *)((int)zP4 + iVar16 + 4) =\n                       (&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1" (pointer_expression "*(uint *)((int)zP4 + iVar16 + 4)" * (cast_expression "(uint *)((int)zP4 + iVar16 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)zP4 + iVar16 + 4)" ( (binary_expression "(int)zP4 + iVar16 + 4" (binary_expression "(int)zP4 + iVar16" (cast_expression "(int)zP4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (binary_expression "(&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol - 1" (field_expression "(&((ExprList_item *)&local_b0->enc)->u)[iVar16].x.iOrderByCol" (field_expression "(&((ExprList_item *)&local_b0->enc)->u)[iVar16].x" (subscript_expression "(&((ExprList_item *)&local_b0->enc)->u)[iVar16]" (parenthesized_expression "(&((ExprList_item *)&local_b0->enc)->u)" ( (pointer_expression "&((ExprList_item *)&local_b0->enc)->u" & (field_expression "((ExprList_item *)&local_b0->enc)->u" (parenthesized_expression "((ExprList_item *)&local_b0->enc)" ( (cast_expression "(ExprList_item *)&local_b0->enc" ( (type_descriptor "ExprList_item *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_b0->enc" & (field_expression "local_b0->enc" identifier -> field_identifier))) )) -> field_identifier)) )) [ identifier ]) . field_identifier) . field_identifier) - number_literal)) ;) (expression_statement "iVar16 = iVar16 + 4;" (assignment_expression "iVar16 = iVar16 + 4" identifier = (binary_expression "iVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar25 * 4 != iVar16)" ( (binary_expression "iVar25 * 4 != iVar16" (binary_expression "iVar25 * 4" identifier * number_literal) != identifier) )) ;) })) (expression_statement "local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc);" (assignment_expression "local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc)" identifier = (call_expression "multiSelectOrderByKeyInfo(pParse,p,(int)&local_b0->enc)" identifier (argument_list "(pParse,p,(int)&local_b0->enc)" ( identifier , identifier , (cast_expression "(int)&local_b0->enc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_b0->enc" & (field_expression "local_b0->enc" identifier -> field_identifier))) )))) ;) })) (expression_statement "p->pOrderBy = (ExprList *)local_b0;" (assignment_expression "p->pOrderBy = (ExprList *)local_b0" (field_expression "p->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0);" (assignment_expression "pEVar18 = sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0)" identifier = (call_expression "sqlite3ExprListDup(pParse->db,(ExprList *)local_b0,0)" identifier (argument_list "(pParse->db,(ExprList *)local_b0,0)" ( (field_expression "pParse->db" identifier -> field_identifier) , (cast_expression "(ExprList *)local_b0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "pSVar39->pOrderBy = pEVar18;" (assignment_expression "pSVar39->pOrderBy = pEVar18" (field_expression "pSVar39->pOrderBy" identifier -> field_identifier) = identifier) ;) (if_statement "if (uVar15 == 0x85) {\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }" if (parenthesized_expression "(uVar15 == 0x85)" ( (binary_expression "uVar15 == 0x85" identifier == number_literal) )) (compound_statement "{\n              local_b0 = (KeyInfo *)0x0;\n              local_94 = 0;\n            }" { (expression_statement "local_b0 = (KeyInfo *)0x0;" (assignment_expression "local_b0 = (KeyInfo *)0x0" identifier = (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }" else (compound_statement "{\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_94 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);\n              local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n            }" { (expression_statement "puVar4 = (undefined1 *)p->pEList->nExpr;" (assignment_expression "puVar4 = (undefined1 *)p->pEList->nExpr" identifier = (cast_expression "(undefined1 *)p->pEList->nExpr" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "local_94 = pParse->nMem + 1;" (assignment_expression "local_94 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = (int)(puVar4 + pParse->nMem + 1);" (assignment_expression "pParse->nMem = (int)(puVar4 + pParse->nMem + 1)" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)(puVar4 + pParse->nMem + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar4 + pParse->nMem + 1)" ( (binary_expression "puVar4 + pParse->nMem + 1" (binary_expression "puVar4 + pParse->nMem" identifier + (field_expression "pParse->nMem" identifier -> field_identifier)) + number_literal) )))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18)" identifier (argument_list "(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);" (assignment_expression "local_b0 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1)" identifier = (call_expression "sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1)" identifier (argument_list "(psVar3,(int)puVar4,1)" ( identifier , (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal )))) ;) (if_statement "if ((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }" if (parenthesized_expression "((local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4))" ( (binary_expression "(local_b0 != (KeyInfo *)0x0) && (0 < (int)puVar4)" (parenthesized_expression "(local_b0 != (KeyInfo *)0x0)" ( (binary_expression "local_b0 != (KeyInfo *)0x0" identifier != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(0 < (int)puVar4)" ( (binary_expression "0 < (int)puVar4" number_literal < (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n                pSVar37 = (Select *)0x0;\n                do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }" { (expression_statement "pSVar37 = (Select *)0x0;" (assignment_expression "pSVar37 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);" do (compound_statement "{\n                  pSVar35 = p->pPrior;\n                  if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }\n                  local_b0->aColl[(int)pSVar37] = pCVar19;\n                  local_b0->aSortFlags[(int)pSVar37] = '\0';\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                }" { (expression_statement "pSVar35 = p->pPrior;" (assignment_expression "pSVar35 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (if_statement "if ((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))) {\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }" if (parenthesized_expression "((pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0))))))" ( (binary_expression "(pSVar35 == (Select *)0x0) ||\n                     (((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))" (parenthesized_expression "(pSVar35 == (Select *)0x0)" ( (binary_expression "pSVar35 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))))" ( (parenthesized_expression "((pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0))))" ( (binary_expression "(pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)) &&\n                      ((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))" (parenthesized_expression "(pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0))" ( (comma_expression "pSVar5 = pSVar35->pPrior, pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)" (assignment_expression "pSVar5 = pSVar35->pPrior" identifier = (field_expression "pSVar35->pPrior" identifier -> field_identifier)) , (binary_expression "pSVar5 == (Select *)0x0 ||\n                       (pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)" (binary_expression "pSVar5 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0)" ( (comma_expression "pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37),\n                       pCVar19 == (CollSeq *)0x0" (assignment_expression "pCVar19 = multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37)" identifier = (call_expression "multiSelectCollSeq(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37)" identifier (argument_list "(pParse,(Select *)&pSVar5->pEList,\n                                                     (int)pSVar5->pPrior,pSVar37)" ( identifier , (cast_expression "(Select *)&pSVar5->pEList" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar5->pEList" & (field_expression "pSVar5->pEList" identifier -> field_identifier))) , (cast_expression "(int)pSVar5->pPrior" ( (type_descriptor "int" primitive_type) ) (field_expression "pSVar5->pPrior" identifier -> field_identifier)) , identifier )))) , (binary_expression "pCVar19 == (CollSeq *)0x0" identifier == (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) && (parenthesized_expression "((pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)))" ( (parenthesized_expression "(pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0))" ( (binary_expression "pSVar35->pEList->nExpr <= (int)pSVar37 ||\n                       (pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)" (binary_expression "pSVar35->pEList->nExpr <= (int)pSVar37" (field_expression "pSVar35->pEList->nExpr" (field_expression "pSVar35->pEList" identifier -> field_identifier) -> field_identifier) <= (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier)) || (parenthesized_expression "(pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0)" ( (comma_expression "pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr),\n                       pCVar19 == (CollSeq *)0x0" (assignment_expression "pCVar19 = sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr)" identifier = (call_expression "sqlite3ExprCollSeq(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr)" identifier (argument_list "(pParse,pSVar35->pEList->a[(int)pSVar37].pExpr)" ( identifier , (field_expression "pSVar35->pEList->a[(int)pSVar37].pExpr" (subscript_expression "pSVar35->pEList->a[(int)pSVar37]" (field_expression "pSVar35->pEList->a" (field_expression "pSVar35->pEList" identifier -> field_identifier) -> field_identifier) [ (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) )))) , (binary_expression "pCVar19 == (CollSeq *)0x0" identifier == (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) ))) )) (compound_statement "{\n                    if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }\n                  }" { (if_statement "if ((int)pSVar37 < p->pEList->nExpr) {\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }\n                    else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }" if (parenthesized_expression "((int)pSVar37 < p->pEList->nExpr)" ( (binary_expression "(int)pSVar37 < p->pEList->nExpr" (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier)) )) (compound_statement "{\n                      pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);\n                    }" { (expression_statement "pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr);" (assignment_expression "pCVar19 = sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr)" identifier = (call_expression "sqlite3ExprCollSeq(pParse,p->pEList->a[(int)pSVar37].pExpr)" identifier (argument_list "(pParse,p->pEList->a[(int)pSVar37].pExpr)" ( identifier , (field_expression "p->pEList->a[(int)pSVar37].pExpr" (subscript_expression "p->pEList->a[(int)pSVar37]" (field_expression "p->pEList->a" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier) [ (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) )))) ;) }) (else_clause "else {\n                      pCVar19 = (CollSeq *)0x0;\n                    }" else (compound_statement "{\n                      pCVar19 = (CollSeq *)0x0;\n                    }" { (expression_statement "pCVar19 = (CollSeq *)0x0;" (assignment_expression "pCVar19 = (CollSeq *)0x0" identifier = (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) (expression_statement "local_b0->aColl[(int)pSVar37] = pCVar19;" (assignment_expression "local_b0->aColl[(int)pSVar37] = pCVar19" (subscript_expression "local_b0->aColl[(int)pSVar37]" (field_expression "local_b0->aColl" identifier -> field_identifier) [ (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "local_b0->aSortFlags[(int)pSVar37] = '\0';" (assignment_expression "local_b0->aSortFlags[(int)pSVar37] = '\0'" (subscript_expression "local_b0->aSortFlags[(int)pSVar37]" (field_expression "local_b0->aSortFlags" identifier -> field_identifier) [ (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pSVar37 = (Select *)&pSVar37->field_0x1;" (assignment_expression "pSVar37 = (Select *)&pSVar37->field_0x1" identifier = (cast_expression "(Select *)&pSVar37->field_0x1" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar37->field_0x1" & (field_expression "pSVar37->field_0x1" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "((Select *)puVar4 != pSVar37)" ( (binary_expression "(Select *)puVar4 != pSVar37" (cast_expression "(Select *)puVar4" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) })) }))) (expression_statement "pEVar18 = p->pOrderBy;" (assignment_expression "pEVar18 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) ;) (expression_statement "p->pPrior = (Select *)0x0;" (assignment_expression "p->pPrior = (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pSVar39->pNext = (Select *)0x0;" (assignment_expression "pSVar39->pNext = (Select *)0x0" (field_expression "pSVar39->pNext" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)) {\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }" if (parenthesized_expression "(((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2))" ( (binary_expression "((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')) &&\n               (pParse->eParseMode < 2)" (parenthesized_expression "((pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0'))" ( (binary_expression "(pEVar18 != (ExprList *)0x0) && (pParse->db->mallocFailed == '\0')" (parenthesized_expression "(pEVar18 != (ExprList *)0x0)" ( (binary_expression "pEVar18 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pParse->db->mallocFailed == '\0')" ( (binary_expression "pParse->db->mallocFailed == '\0'" (field_expression "pParse->db->mallocFailed" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(pParse->eParseMode < 2)" ( (binary_expression "pParse->eParseMode < 2" (field_expression "pParse->eParseMode" identifier -> field_identifier) < number_literal) ))) )) (compound_statement "{\n              if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }\n            }" { (if_statement "if (pParse->db->aLimit[2] < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }" if (parenthesized_expression "(pParse->db->aLimit[2] < pEVar18->nExpr)" ( (binary_expression "pParse->db->aLimit[2] < pEVar18->nExpr" (subscript_expression "pParse->db->aLimit[2]" (field_expression "pParse->db->aLimit" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) [ number_literal ]) < (field_expression "pEVar18->nExpr" identifier -> field_identifier)) )) (compound_statement "{\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);\n              }" { (expression_statement "in_stack_ffffff18 = "too many terms in %s BY clause";" (assignment_expression "in_stack_ffffff18 = "too many terms in %s BY clause"" identifier = (string_literal ""too many terms in %s BY clause"" " string_content ")) ;) (expression_statement "sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18);" (call_expression "sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",pEVar18)" identifier (argument_list "(pParse,"too many terms in %s BY clause","ORDER",pEVar18)" ( identifier , (string_literal ""too many terms in %s BY clause"" " string_content ") , (string_literal ""ORDER"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }" else (compound_statement "{\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");\n              }" { (expression_statement "sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER");" (call_expression "sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar18,"ORDER")" identifier (argument_list "(pParse,(Select *)&p->pEList,pEVar18,"ORDER")" ( identifier , (cast_expression "(Select *)&p->pEList" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->pEList" & (field_expression "p->pEList" identifier -> field_identifier))) , identifier , (string_literal ""ORDER"" " string_content ") ))) ;) }))) })) (if_statement "if (((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }" if (parenthesized_expression "(((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2))))" ( (binary_expression "((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)) &&\n               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))" (parenthesized_expression "((pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0))" ( (binary_expression "(pSVar39->pPrior == (Select *)0x0) &&\n                (pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)" (parenthesized_expression "(pSVar39->pPrior == (Select *)0x0)" ( (binary_expression "pSVar39->pPrior == (Select *)0x0" (field_expression "pSVar39->pPrior" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0)" ( (comma_expression "pEVar18 = pSVar39->pOrderBy, pEVar18 != (ExprList *)0x0" (assignment_expression "pEVar18 = pSVar39->pOrderBy" identifier = (field_expression "pSVar39->pOrderBy" identifier -> field_identifier)) , (binary_expression "pEVar18 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))" ( (parenthesized_expression "(pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2))" ( (binary_expression "pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)" (binary_expression "pParse->db->mallocFailed == '\0'" (field_expression "pParse->db->mallocFailed" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(pParse->eParseMode < 2)" ( (binary_expression "pParse->eParseMode < 2" (field_expression "pParse->eParseMode" identifier -> field_identifier) < number_literal) ))) )) ))) )) (compound_statement "{\n              iVar16 = pParse->db->aLimit[2];\n              if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }\n            }" { (expression_statement "iVar16 = pParse->db->aLimit[2];" (assignment_expression "iVar16 = pParse->db->aLimit[2]" identifier = (subscript_expression "pParse->db->aLimit[2]" (field_expression "pParse->db->aLimit" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) [ number_literal ])) ;) (if_statement "if (iVar16 < pEVar18->nExpr) {\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }\n              else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }" if (parenthesized_expression "(iVar16 < pEVar18->nExpr)" ( (binary_expression "iVar16 < pEVar18->nExpr" identifier < (field_expression "pEVar18->nExpr" identifier -> field_identifier)) )) (compound_statement "{\n                in_stack_ffffff18 = "too many terms in %s BY clause";\n                sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);\n              }" { (expression_statement "in_stack_ffffff18 = "too many terms in %s BY clause";" (assignment_expression "in_stack_ffffff18 = "too many terms in %s BY clause"" identifier = (string_literal ""too many terms in %s BY clause"" " string_content ")) ;) (expression_statement "sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16);" (call_expression "sqlite3ErrorMsg(pParse,"too many terms in %s BY clause","ORDER",iVar16)" identifier (argument_list "(pParse,"too many terms in %s BY clause","ORDER",iVar16)" ( identifier , (string_literal ""too many terms in %s BY clause"" " string_content ") , (string_literal ""ORDER"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }" else (compound_statement "{\n                sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");\n              }" { (expression_statement "sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER");" (call_expression "sqlite3ResolveOrderGroupBy(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER")" identifier (argument_list "(pParse,(Select *)&pSVar39->pEList,pEVar18,"ORDER")" ( identifier , (cast_expression "(Select *)&pSVar39->pEList" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar39->pEList" & (field_expression "pSVar39->pEList" identifier -> field_identifier))) , identifier , (string_literal ""ORDER"" " string_content ") ))) ;) }))) })) (expression_statement "computeLimitRegisters(pParse,p,iVar26);" (call_expression "computeLimitRegisters(pParse,p,iVar26)" identifier (argument_list "(pParse,p,iVar26)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar16 = p->iLimit;" (assignment_expression "iVar16 = p->iLimit" identifier = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (if_statement "if ((uVar15 == 0x85) && (iVar16 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }" if (parenthesized_expression "((uVar15 == 0x85) && (iVar16 != 0))" ( (binary_expression "(uVar15 == 0x85) && (iVar16 != 0)" (parenthesized_expression "(uVar15 == 0x85)" ( (binary_expression "uVar15 == 0x85" identifier == number_literal) )) && (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) ))) )) (compound_statement "{\n              local_9c = pParse->nMem + 1;\n              local_90 = pParse->nMem + 2;\n              pParse->nMem = local_90;\n              if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);\n              sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);\n            }" { (expression_statement "local_9c = pParse->nMem + 1;" (assignment_expression "local_9c = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "local_90 = pParse->nMem + 2;" (assignment_expression "local_90 = pParse->nMem + 2" identifier = (binary_expression "pParse->nMem + 2" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = local_90;" (assignment_expression "pParse->nMem = local_90" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (if_statement "if (p->iOffset != 0) {\n                iVar16 = p->iOffset + 1;\n              }" if (parenthesized_expression "(p->iOffset != 0)" ( (binary_expression "p->iOffset != 0" (field_expression "p->iOffset" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                iVar16 = p->iOffset + 1;\n              }" { (expression_statement "iVar16 = p->iOffset + 1;" (assignment_expression "iVar16 = p->iOffset + 1" identifier = (binary_expression "p->iOffset + 1" (field_expression "p->iOffset" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18)" identifier (argument_list "(pVVar30,0x4d,iVar16,local_9c,(int)in_stack_ffffff18)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18)" identifier (argument_list "(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n              local_90 = 0;\n              local_9c = 0;\n            }" else (compound_statement "{\n              local_90 = 0;\n              local_9c = 0;\n            }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) }))) (if_statement "if (p->pLimit != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }" if (parenthesized_expression "(p->pLimit != (Expr *)0x0)" ( (binary_expression "p->pLimit != (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sqlite3ExprDeleteNN(psVar3,p->pLimit);\n            }" { (expression_statement "sqlite3ExprDeleteNN(psVar3,p->pLimit);" (call_expression "sqlite3ExprDeleteNN(psVar3,p->pLimit)" identifier (argument_list "(psVar3,p->pLimit)" ( identifier , (field_expression "p->pLimit" identifier -> field_identifier) ))) ;) })) (expression_statement "p->pLimit = (Expr *)0x0;" (assignment_expression "p->pLimit = (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "destA.eDest = '\r';" (assignment_expression "destA.eDest = '\r'" (field_expression "destA.eDest" identifier . field_identifier) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "destA.iSDParm2 = 0;" (assignment_expression "destA.iSDParm2 = 0" (field_expression "destA.iSDParm2" identifier . field_identifier) = number_literal) ;) (expression_statement "destA.zAffSdst = (char *)0x0;" (assignment_expression "destA.zAffSdst = (char *)0x0" (field_expression "destA.zAffSdst" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "destA.iSdst = 0;" (assignment_expression "destA.iSdst = 0" (field_expression "destA.iSdst" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar21 = pParse->nMem;" (assignment_expression "iVar21 = pParse->nMem" identifier = (field_expression "pParse->nMem" identifier -> field_identifier)) ;) (expression_statement "destA.nSdst = 0;" (assignment_expression "destA.nSdst = 0" (field_expression "destA.nSdst" identifier . field_identifier) = number_literal) ;) (expression_statement "nLimit = CONCAT31(nLimit._1_3_,0xd);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,0xd)" identifier = (call_expression "CONCAT31(nLimit._1_3_,0xd)" identifier (argument_list "(nLimit._1_3_,0xd)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "uVar36 = iVar21 + 2;" (assignment_expression "uVar36 = iVar21 + 2" identifier = (binary_expression "iVar21 + 2" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar21 + 1;" (assignment_expression "iVar16 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar2 = iVar21 + 3;" (assignment_expression "iVar2 = iVar21 + 3" identifier = (binary_expression "iVar21 + 3" identifier + number_literal)) ;) (expression_statement "iVar21 = iVar21 + 4;" (assignment_expression "iVar21 = iVar21 + 4" identifier = (binary_expression "iVar21 + 4" identifier + number_literal)) ;) (expression_statement "pParse->nMem = iVar21;" (assignment_expression "pParse->nMem = iVar21" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar9 = p->op;" (assignment_expression "uVar9 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (expression_statement "pSVar20 = (SelectDest *)"EXCEPT";" (assignment_expression "pSVar20 = (SelectDest *)"EXCEPT"" identifier = (cast_expression "(SelectDest *)"EXCEPT"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""EXCEPT"" " string_content "))) ;) (if_statement "if ((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)) {\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }" if (parenthesized_expression "((uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87))" ( (binary_expression "(uVar9 != 0x86) && (pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)" (parenthesized_expression "(uVar9 != 0x86)" ( (binary_expression "uVar9 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87)" ( (comma_expression "pSVar20 = (SelectDest *)"INTERSECT", uVar9 != 0x87" (assignment_expression "pSVar20 = (SelectDest *)"INTERSECT"" identifier = (cast_expression "(SelectDest *)"INTERSECT"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""INTERSECT"" " string_content "))) , (binary_expression "uVar9 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n              pSVar20 = (SelectDest *)"UNION ALL";\n              if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }\n            }" { (expression_statement "pSVar20 = (SelectDest *)"UNION ALL";" (assignment_expression "pSVar20 = (SelectDest *)"UNION ALL"" identifier = (cast_expression "(SelectDest *)"UNION ALL"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""UNION ALL"" " string_content "))) ;) (if_statement "if (uVar9 != 0x85) {\n                pSVar20 = (SelectDest *)"UNION";\n              }" if (parenthesized_expression "(uVar9 != 0x85)" ( (binary_expression "uVar9 != 0x85" identifier != number_literal) )) (compound_statement "{\n                pSVar20 = (SelectDest *)"UNION";\n              }" { (expression_statement "pSVar20 = (SelectDest *)"UNION";" (assignment_expression "pSVar20 = (SelectDest *)"UNION"" identifier = (cast_expression "(SelectDest *)"UNION"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""UNION"" " string_content "))) ;) })) })) (expression_statement "destA.iSDParm = iVar16;" (assignment_expression "destA.iSDParm = iVar16" (field_expression "destA.iSDParm" identifier . field_identifier) = identifier) ;) (expression_statement "local_38 = uVar36;" (assignment_expression "local_38 = uVar36" identifier = identifier) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)")" identifier (argument_list "(pParse,'\x01',"MERGE (%s)")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""MERGE (%s)"" " string_content ") ))) ;) (expression_statement "iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1)" identifier (argument_list "(pVVar30,0xd,iVar16,0,pVVar30->nOp + 1)" ( identifier , number_literal , identifier , number_literal , (binary_expression "pVVar30->nOp + 1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pSVar39->iLimit = local_9c;" (assignment_expression "pSVar39->iLimit = local_9c" (field_expression "pSVar39->iLimit" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar42 = 1;" (assignment_expression "iVar42 = 1" identifier = number_literal) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"LEFT");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"LEFT")" identifier (argument_list "(pParse,'\x01',"LEFT")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""LEFT"" " string_content ") ))) ;) (expression_statement "sqlite3Select(pParse,pSVar39,&destA);" (call_expression "sqlite3Select(pParse,pSVar39,&destA)" identifier (argument_list "(pParse,pSVar39,&destA)" ( identifier , identifier , (pointer_expression "&destA" & identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0x42,iVar16,0,iVar42)" identifier (argument_list "(pVVar30,0x42,iVar16,0,iVar42)" ( identifier , number_literal , identifier , number_literal , identifier ))) ;) (expression_statement "pPVar45 = pVVar30->pParse;" (assignment_expression "pPVar45 = pVVar30->pParse" identifier = (field_expression "pVVar30->pParse" identifier -> field_identifier)) ;) (expression_statement "pPVar45->nTempReg = '\0';" (assignment_expression "pPVar45->nTempReg = '\0'" (field_expression "pPVar45->nTempReg" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pPVar45->nRangeReg = 0;" (assignment_expression "pPVar45->nRangeReg = 0" (field_expression "pPVar45->nRangeReg" identifier -> field_identifier) = number_literal) ;) (if_statement "if (iVar22 < 0) {\n              iVar22 = pVVar30->nOp + -1;\n            }" if (parenthesized_expression "(iVar22 < 0)" ( (binary_expression "iVar22 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar22 = pVVar30->nOp + -1;\n            }" { (expression_statement "iVar22 = pVVar30->nOp + -1;" (assignment_expression "iVar22 = pVVar30->nOp + -1" identifier = (binary_expression "pVVar30->nOp + -1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar27 = (Op *)&dummy_22674;" (assignment_expression "pOVar27 = (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 (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar22;\n            }" if (parenthesized_expression "(pVVar30->db->mallocFailed == '\0')" ( (binary_expression "pVVar30->db->mallocFailed == '\0'" (field_expression "pVVar30->db->mallocFailed" (field_expression "pVVar30->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar27 = pVVar30->aOp + iVar22;\n            }" { (expression_statement "pOVar27 = pVVar30->aOp + iVar22;" (assignment_expression "pOVar27 = pVVar30->aOp + iVar22" identifier = (binary_expression "pVVar30->aOp + iVar22" (field_expression "pVVar30->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar27->p2 = pVVar30->nOp;" (assignment_expression "pOVar27->p2 = pVVar30->nOp" (field_expression "pOVar27->p2" identifier -> field_identifier) = (field_expression "pVVar30->nOp" identifier -> field_identifier)) ;) (expression_statement "iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1);" (assignment_expression "iVar23 = sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1)" identifier (argument_list "(pVVar30,0xd,uVar36,0,pVVar30->nOp + 1)" ( identifier , number_literal , identifier , number_literal , (binary_expression "pVVar30->nOp + 1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "iVar22 = p->iLimit;" (assignment_expression "iVar22 = p->iLimit" identifier = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (expression_statement "iVar42 = p->iOffset;" (assignment_expression "iVar42 = p->iOffset" identifier = (field_expression "p->iOffset" identifier -> field_identifier)) ;) (expression_statement "p->iOffset = 0;" (assignment_expression "p->iOffset = 0" (field_expression "p->iOffset" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->iLimit = local_90;" (assignment_expression "p->iLimit = local_90" (field_expression "p->iLimit" identifier -> field_identifier) = identifier) ;) (expression_statement "p3 = 1;" (assignment_expression "p3 = 1" identifier = number_literal) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"RIGHT");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"RIGHT")" identifier (argument_list "(pParse,'\x01',"RIGHT")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""RIGHT"" " string_content ") ))) ;) (expression_statement "sqlite3Select(pParse,p,local_a8);" (call_expression "sqlite3Select(pParse,p,local_a8)" identifier (argument_list "(pParse,p,local_a8)" ( identifier , identifier , identifier ))) ;) (expression_statement "p->iOffset = iVar42;" (assignment_expression "p->iOffset = iVar42" (field_expression "p->iOffset" identifier -> field_identifier) = identifier) ;) (expression_statement "p->iLimit = iVar22;" (assignment_expression "p->iLimit = iVar22" (field_expression "p->iLimit" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0x42,uVar36,0,p3)" identifier (argument_list "(pVVar30,0x42,uVar36,0,p3)" ( identifier , number_literal , identifier , number_literal , identifier ))) ;) (expression_statement "pPVar45 = pVVar30->pParse;" (assignment_expression "pPVar45 = pVVar30->pParse" identifier = (field_expression "pVVar30->pParse" identifier -> field_identifier)) ;) (expression_statement "pPVar45->nTempReg = '\0';" (assignment_expression "pPVar45->nTempReg = '\0'" (field_expression "pPVar45->nTempReg" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pPVar45->nRangeReg = 0;" (assignment_expression "pPVar45->nRangeReg = 0" (field_expression "pPVar45->nRangeReg" identifier -> field_identifier) = number_literal) ;) (expression_statement "pKVar28 = local_b0;" (assignment_expression "pKVar28 = local_b0" identifier = identifier) ;) (expression_statement "iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);" (assignment_expression "iVar22 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24)" identifier = (call_expression "generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24)" identifier (argument_list "(pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,iVar2\n                                ,local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24)" ( identifier , (cast_expression "(Select *)&destA.iSdst" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&destA.iSdst" & (field_expression "destA.iSdst" identifier . field_identifier))) , (cast_expression "(SelectDest *)&destA.nSdst" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&destA.nSdst" & (field_expression "destA.nSdst" identifier . field_identifier))) , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (if_statement "if (uVar15 - 0x84 < 2) {\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }" if (parenthesized_expression "(uVar15 - 0x84 < 2)" ( (binary_expression "uVar15 - 0x84 < 2" (binary_expression "uVar15 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              pKVar28 = local_b0;\n              local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);\n            }" { (expression_statement "pKVar28 = local_b0;" (assignment_expression "pKVar28 = local_b0" identifier = identifier) ;) (expression_statement "local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24);" (assignment_expression "local_88 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24)" identifier = (call_expression "generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24)" identifier (argument_list "(pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar21,\n                                    local_94,local_b0,iVar26,pSVar20,in_stack_ffffff24)" ( identifier , (cast_expression "(Select *)&local_30" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_30" & identifier)) , (cast_expression "(SelectDest *)local_2c" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) })) (if_statement "if ((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)) {\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }" if (parenthesized_expression "((local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0))" ( (binary_expression "(local_b0 != (KeyInfo *)0x0) &&\n               (uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)" (parenthesized_expression "(local_b0 != (KeyInfo *)0x0)" ( (binary_expression "local_b0 != (KeyInfo *)0x0" identifier != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0)" ( (comma_expression "uVar24 = local_b0->nRef - 1, local_b0->nRef = uVar24, uVar24 == 0" (assignment_expression "uVar24 = local_b0->nRef - 1" identifier = (binary_expression "local_b0->nRef - 1" (field_expression "local_b0->nRef" identifier -> field_identifier) - number_literal)) , (comma_expression "local_b0->nRef = uVar24, uVar24 == 0" (assignment_expression "local_b0->nRef = uVar24" (field_expression "local_b0->nRef" identifier -> field_identifier) = identifier) , (binary_expression "uVar24 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n              sqlite3DbFreeNN(local_b0->db,local_b0);\n            }" { (expression_statement "sqlite3DbFreeNN(local_b0->db,local_b0);" (call_expression "sqlite3DbFreeNN(local_b0->db,local_b0)" identifier (argument_list "(local_b0->db,local_b0)" ( (field_expression "local_b0->db" identifier -> field_identifier) , identifier ))) ;) })) (expression_statement "iVar42 = iVar26;" (assignment_expression "iVar42 = iVar26" identifier = identifier) ;) (expression_statement "local_94 = iVar26;" (assignment_expression "local_94 = iVar26" identifier = identifier) ;) (if_statement "if (1 < uVar15 - 0x86) {\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }" if (parenthesized_expression "(1 < uVar15 - 0x86)" ( (binary_expression "1 < uVar15 - 0x86" number_literal < (binary_expression "uVar15 - 0x86" identifier - number_literal)) )) (compound_statement "{\n              iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n              local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n              p->nSelectRow = LVar11;\n            }" { (expression_statement "iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);" (assignment_expression "iVar42 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28)" identifier (argument_list "(pVVar30,0xc,iVar21,local_88,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28);" (assignment_expression "local_94 = sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,iVar26,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,uVar36,iVar26,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar42,(int)pKVar28)" identifier (argument_list "(pVVar30,0xb,0,iVar42,(int)pKVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);" (assignment_expression "LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow)" identifier = (call_expression "sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow)" identifier (argument_list "(p->nSelectRow,pSVar39->nSelectRow)" ( (field_expression "p->nSelectRow" identifier -> field_identifier) , (field_expression "pSVar39->nSelectRow" identifier -> field_identifier) )))) ;) (expression_statement "p->nSelectRow = LVar11;" (assignment_expression "p->nSelectRow = LVar11" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (uVar15 == 0x87) {\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }\n            else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }" if (parenthesized_expression "(uVar15 == 0x87)" ( (binary_expression "uVar15 == 0x87" identifier == number_literal) )) (compound_statement "{\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a0 = (int)local_a8 + 1;\n              local_b0 = (KeyInfo *)iVar42;\n            }" { (if_statement "if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }" if (parenthesized_expression "(pSVar39->nSelectRow < p->nSelectRow)" ( (binary_expression "pSVar39->nSelectRow < p->nSelectRow" (field_expression "pSVar39->nSelectRow" identifier -> field_identifier) < (field_expression "p->nSelectRow" identifier -> field_identifier)) )) (compound_statement "{\n                p->nSelectRow = pSVar39->nSelectRow;\n              }" { (expression_statement "p->nSelectRow = pSVar39->nSelectRow;" (assignment_expression "p->nSelectRow = pSVar39->nSelectRow" (field_expression "p->nSelectRow" identifier -> field_identifier) = (field_expression "pSVar39->nSelectRow" identifier -> field_identifier)) ;) })) (expression_statement "local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);" (assignment_expression "local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" identifier = (cast_expression "(SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" identifier (argument_list "(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28)" identifier (argument_list "(pVVar30,0xb,0,iVar14,(int)pKVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_a0 = (int)local_a8 + 1;" (assignment_expression "local_a0 = (int)local_a8 + 1" identifier = (binary_expression "(int)local_a8 + 1" (cast_expression "(int)local_a8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_b0 = (KeyInfo *)iVar42;" (assignment_expression "local_b0 = (KeyInfo *)iVar42" identifier = (cast_expression "(KeyInfo *)iVar42" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }" else (compound_statement "{\n              local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);\n              local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n              sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              local_a8 = (SelectDest *)local_a0;\n              if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }\n            }" { (expression_statement "local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);" (assignment_expression "local_b0 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" identifier = (cast_expression "(KeyInfo *)sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" identifier (argument_list "(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar26,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,iVar16,iVar26,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xb,0,(int)local_b0,(int)pKVar28)" identifier (argument_list "(pVVar30,0xb,0,(int)local_b0,(int)pKVar28)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28);" (assignment_expression "local_a0 = sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" identifier (argument_list "(pVVar30,0xc,iVar2,iVar22,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28)" identifier (argument_list "(pVVar30,0xb,0,iVar14,(int)pKVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_a8 = (SelectDest *)local_a0;" (assignment_expression "local_a8 = (SelectDest *)local_a0" identifier = (cast_expression "(SelectDest *)local_a0" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (uVar15 != 0x85) {\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }" if (parenthesized_expression "(uVar15 != 0x85)" ( (binary_expression "uVar15 != 0x85" identifier != number_literal) )) (compound_statement "{\n                local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);\n                sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);\n              }" { (expression_statement "local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28);" (assignment_expression "local_a8 = (SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" identifier = (cast_expression "(SelectDest *)sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,iVar16,iVar42,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28)" identifier (argument_list "(pVVar30,0xb,0,iVar14,(int)pKVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) }))) (expression_statement "iVar2 = pVVar30->nOp;" (assignment_expression "iVar2 = pVVar30->nOp" identifier = (field_expression "pVVar30->nOp" identifier -> field_identifier)) ;) (if_statement "if (uVar15 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }" if (parenthesized_expression "(uVar15 - 0x84 < 2)" ( (binary_expression "uVar15 - 0x84 < 2" (binary_expression "uVar15 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);\n            }" { (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xc,iVar21,local_88,(int)pKVar28)" identifier (argument_list "(pVVar30,0xc,iVar21,local_88,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28)" ( identifier , number_literal , identifier , (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xb,0,iVar14,(int)pKVar28)" identifier (argument_list "(pVVar30,0xb,0,iVar14,(int)pKVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar21 = pVVar30->nOp + -1;" (assignment_expression "iVar21 = pVVar30->nOp + -1" identifier = (binary_expression "pVVar30->nOp + -1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < iVar23) {\n              iVar21 = iVar23;\n            }" if (parenthesized_expression "(-1 < iVar23)" ( (binary_expression "-1 < iVar23" number_literal < identifier) )) (compound_statement "{\n              iVar21 = iVar23;\n            }" { (expression_statement "iVar21 = iVar23;" (assignment_expression "iVar21 = iVar23" identifier = identifier) ;) })) (expression_statement "pOVar27 = (Op *)&dummy_22674;" (assignment_expression "pOVar27 = (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 (pVVar30->db->mallocFailed == '\0') {\n              pOVar27 = pVVar30->aOp + iVar21;\n            }" if (parenthesized_expression "(pVVar30->db->mallocFailed == '\0')" ( (binary_expression "pVVar30->db->mallocFailed == '\0'" (field_expression "pVVar30->db->mallocFailed" (field_expression "pVVar30->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar27 = pVVar30->aOp + iVar21;\n            }" { (expression_statement "pOVar27 = pVVar30->aOp + iVar21;" (assignment_expression "pOVar27 = pVVar30->aOp + iVar21" identifier = (binary_expression "pVVar30->aOp + iVar21" (field_expression "pVVar30->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar27->p2 = pVVar30->nOp;" (assignment_expression "pOVar27->p2 = pVVar30->nOp" (field_expression "pOVar27->p2" identifier -> field_identifier) = (field_expression "pVVar30->nOp" identifier -> field_identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,iVar16,local_94,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,iVar16,local_94,(int)pKVar28)" ( identifier , number_literal , identifier , identifier , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28)" identifier (argument_list "(pVVar30,0xe,uVar36,(int)local_b0,(int)pKVar28)" ( identifier , number_literal , identifier , (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(pVVar30,iVar14);" (call_expression "sqlite3VdbeResolveLabel(pVVar30,iVar14)" identifier (argument_list "(pVVar30,iVar14)" ( identifier , identifier ))) ;) (expression_statement "iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28);" (assignment_expression "iVar14 = sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0x55,0,0,(int)pKVar28)" identifier (argument_list "(pVVar30,0x55,0,0,(int)pKVar28)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)pKVar28" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf);" (call_expression "sqlite3VdbeChangeP4(pVVar30,iVar14,(char *)zP4,-0xf)" identifier (argument_list "(pVVar30,iVar14,(char *)zP4,-0xf)" ( identifier , identifier , (cast_expression "(char *)zP4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25);" (assignment_expression "iVar25 = sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar30,0x56,destA.iSdst,local_30,iVar25)" identifier (argument_list "(pVVar30,0x56,destA.iSdst,local_30,iVar25)" ( identifier , number_literal , (field_expression "destA.iSdst" identifier . field_identifier) , identifier , identifier )))) ;) (expression_statement "sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9);" (call_expression "sqlite3VdbeChangeP4(pVVar30,iVar25,(char *)local_98,-9)" identifier (argument_list "(pVVar30,iVar25,(char *)local_98,-9)" ( identifier , identifier , (cast_expression "(char *)local_98" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (if_statement "if (0 < pVVar30->nOp) {\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }" if (parenthesized_expression "(0 < pVVar30->nOp)" ( (binary_expression "0 < pVVar30->nOp" number_literal < (field_expression "pVVar30->nOp" identifier -> field_identifier)) )) (compound_statement "{\n              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;\n            }" { (expression_statement "pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;" (assignment_expression "pVVar30->aOp[pVVar30->nOp + -1].p5 = 1" (field_expression "pVVar30->aOp[pVVar30->nOp + -1].p5" (subscript_expression "pVVar30->aOp[pVVar30->nOp + -1]" (field_expression "pVVar30->aOp" identifier -> field_identifier) [ (binary_expression "pVVar30->nOp + -1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) (expression_statement "sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2);" (call_expression "sqlite3VdbeAddOp3(pVVar30,0x10,local_a0,(int)local_a8,iVar2)" identifier (argument_list "(pVVar30,0x10,local_a0,(int)local_a8,iVar2)" ( identifier , number_literal , identifier , (cast_expression "(int)local_a8" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeResolveLabel(pVVar30,iVar26);" (call_expression "sqlite3VdbeResolveLabel(pVVar30,iVar26)" identifier (argument_list "(pVVar30,iVar26)" ( identifier , identifier ))) ;) (if_statement "if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }" if (parenthesized_expression "(p->pPrior != (Select *)0x0)" ( (binary_expression "p->pPrior != (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              clearSelect(psVar3,p->pPrior,1);\n            }" { (expression_statement "clearSelect(psVar3,p->pPrior,1);" (call_expression "clearSelect(psVar3,p->pPrior,1)" identifier (argument_list "(psVar3,p->pPrior,1)" ( identifier , (field_expression "p->pPrior" identifier -> field_identifier) , number_literal ))) ;) })) (expression_statement "p->pPrior = pSVar39;" (assignment_expression "p->pPrior = pSVar39" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar39->pNext = p;" (assignment_expression "pSVar39->pNext = p" (field_expression "pSVar39->pNext" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar26 = pParse->addrExplain;" (assignment_expression "iVar26 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar26 != 0) {\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n              pVVar30 = pParse->pVdbe;\n              if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }\n              pOVar27 = (Op *)&dummy_22674;\n              if (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }\n              iVar26 = pOVar27->p2;\n            }" { (expression_statement "pVVar30 = pParse->pVdbe;" (assignment_expression "pVVar30 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (iVar26 < 0) {\n                iVar26 = pVVar30->nOp + -1;\n              }" if (parenthesized_expression "(iVar26 < 0)" ( (binary_expression "iVar26 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar26 = pVVar30->nOp + -1;\n              }" { (expression_statement "iVar26 = pVVar30->nOp + -1;" (assignment_expression "iVar26 = pVVar30->nOp + -1" identifier = (binary_expression "pVVar30->nOp + -1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar27 = (Op *)&dummy_22674;" (assignment_expression "pOVar27 = (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 (pVVar30->db->mallocFailed == '\0') {\n                pOVar27 = pVVar30->aOp + iVar26;\n              }" if (parenthesized_expression "(pVVar30->db->mallocFailed == '\0')" ( (binary_expression "pVVar30->db->mallocFailed == '\0'" (field_expression "pVVar30->db->mallocFailed" (field_expression "pVVar30->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pOVar27 = pVVar30->aOp + iVar26;\n              }" { (expression_statement "pOVar27 = pVVar30->aOp + iVar26;" (assignment_expression "pOVar27 = pVVar30->aOp + iVar26" identifier = (binary_expression "pVVar30->aOp + iVar26" (field_expression "pVVar30->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "iVar26 = pOVar27->p2;" (assignment_expression "iVar26 = pOVar27->p2" identifier = (field_expression "pOVar27->p2" identifier -> field_identifier)) ;) })) (expression_statement "pParse->addrExplain = iVar26;" (assignment_expression "pParse->addrExplain = iVar26" (field_expression "pParse->addrExplain" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0 = (Select *)(uint)(pParse->nErr != 0);" (assignment_expression "local_d0 = (Select *)(uint)(pParse->nErr != 0)" identifier = (cast_expression "(Select *)(uint)(pParse->nErr != 0)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(pParse->nErr != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pParse->nErr != 0)" ( (binary_expression "pParse->nErr != 0" (field_expression "pParse->nErr" identifier -> field_identifier) != number_literal) ))))) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (if_statement "if (pSVar39->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }" if (parenthesized_expression "(pSVar39->pPrior == (Select *)0x0)" ( (binary_expression "pSVar39->pPrior == (Select *)0x0" (field_expression "pSVar39->pPrior" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            in_stack_ffffff18 = &DAT_00000001;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }" { (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY")" identifier (argument_list "(pParse,'\x01',"COMPOUND QUERY")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""COMPOUND QUERY"" " string_content ") ))) ;) (expression_statement "in_stack_ffffff18 = &DAT_00000001;" (assignment_expression "in_stack_ffffff18 = &DAT_00000001" identifier = (pointer_expression "&DAT_00000001" & identifier)) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY")" identifier (argument_list "(pParse,'\x01',"LEFT-MOST SUBQUERY")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""LEFT-MOST SUBQUERY"" " string_content ") ))) ;) })) (expression_statement "uVar9 = p->op;" (assignment_expression "uVar9 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (uVar9 == 0x85) {\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" if (parenthesized_expression "(uVar9 == 0x85)" ( (binary_expression "uVar9 == 0x85" identifier == number_literal) )) (compound_statement "{\n            pSVar39->iLimit = p->iLimit;\n            pSVar39->iOffset = p->iOffset;\n            pSVar39->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" { (expression_statement "pSVar39->iLimit = p->iLimit;" (assignment_expression "pSVar39->iLimit = p->iLimit" (field_expression "pSVar39->iLimit" identifier -> field_identifier) = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (expression_statement "pSVar39->iOffset = p->iOffset;" (assignment_expression "pSVar39->iOffset = p->iOffset" (field_expression "pSVar39->iOffset" identifier -> field_identifier) = (field_expression "p->iOffset" identifier -> field_identifier)) ;) (expression_statement "pSVar39->pLimit = p->pLimit;" (assignment_expression "pSVar39->pLimit = p->pLimit" (field_expression "pSVar39->pLimit" identifier -> field_identifier) = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,pSVar39,&dest)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,pSVar39,&dest)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,pSVar39,&dest)" identifier (argument_list "(pParse,pSVar39,&dest)" ( identifier , identifier , (pointer_expression "&dest" & identifier) ))))) ;) (expression_statement "p->pLimit = (Expr *)0x0;" (assignment_expression "p->pLimit = (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_d0 == (Select *)0x0) {\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }" if (parenthesized_expression "(local_d0 == (Select *)0x0)" ( (binary_expression "local_d0 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_c4 = (Vdbe *)pSVar39->iLimit;\n              iVar26 = pSVar39->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = (int)local_c4;\n              p->iOffset = iVar26;\n              if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c0 = p->pPrior;\n              LVar11 = pSVar39->nSelectRow;\n              p->pPrior = pSVar39;\n              LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);\n              p->nSelectRow = LVar11;\n              if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }\n              if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }\n              goto LAB_000a0ff8;\n            }" { (expression_statement "local_c4 = (Vdbe *)pSVar39->iLimit;" (assignment_expression "local_c4 = (Vdbe *)pSVar39->iLimit" identifier = (cast_expression "(Vdbe *)pSVar39->iLimit" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar39->iLimit" identifier -> field_identifier))) ;) (expression_statement "iVar26 = pSVar39->iOffset;" (assignment_expression "iVar26 = pSVar39->iOffset" identifier = (field_expression "pSVar39->iOffset" identifier -> field_identifier)) ;) (expression_statement "p->pPrior = (Select *)0x0;" (assignment_expression "p->pPrior = (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->iLimit = (int)local_c4;" (assignment_expression "p->iLimit = (int)local_c4" (field_expression "p->iLimit" identifier -> field_identifier) = (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "p->iOffset = iVar26;" (assignment_expression "p->iOffset = iVar26" (field_expression "p->iOffset" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_c4 != (Vdbe *)0x0) {\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }" if (parenthesized_expression "(local_c4 != (Vdbe *)0x0)" ( (binary_expression "local_c4 != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);\n                iVar26 = p->iOffset;\n                if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }\n              }" { (expression_statement "local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18);" (assignment_expression "local_c4 = (Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18)" identifier = (cast_expression "(Vdbe *)sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18)" identifier (argument_list "(local_c8,0x14,(int)local_c4,0,\n                                                     (int)in_stack_ffffff18)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "iVar26 = p->iOffset;" (assignment_expression "iVar26 = p->iOffset" identifier = (field_expression "p->iOffset" identifier -> field_identifier)) ;) (if_statement "if (iVar26 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);\n                }" { (expression_statement "sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26)" identifier (argument_list "(local_c8,0x98,p->iLimit,iVar26 + 1,iVar26)" ( identifier , number_literal , (field_expression "p->iLimit" identifier -> field_identifier) , (binary_expression "iVar26 + 1" identifier + number_literal) , identifier ))) ;) })) })) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"UNION ALL")" identifier (argument_list "(pParse,'\x01',"UNION ALL")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""UNION ALL"" " string_content ") ))) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,p,&dest);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,p,&dest)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,p,&dest)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,p,&dest)" identifier (argument_list "(pParse,p,&dest)" ( identifier , identifier , (pointer_expression "&dest" & identifier) ))))) ;) (expression_statement "local_c0 = p->pPrior;" (assignment_expression "local_c0 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "LVar11 = pSVar39->nSelectRow;" (assignment_expression "LVar11 = pSVar39->nSelectRow" identifier = (field_expression "pSVar39->nSelectRow" identifier -> field_identifier)) ;) (expression_statement "p->pPrior = pSVar39;" (assignment_expression "p->pPrior = pSVar39" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (expression_statement "LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11);" (assignment_expression "LVar11 = sqlite3LogEstAdd(p->nSelectRow,LVar11)" identifier = (call_expression "sqlite3LogEstAdd(p->nSelectRow,LVar11)" identifier (argument_list "(p->nSelectRow,LVar11)" ( (field_expression "p->nSelectRow" identifier -> field_identifier) , identifier )))) ;) (expression_statement "p->nSelectRow = LVar11;" (assignment_expression "p->nSelectRow = LVar11" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;) (if_statement "if (((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)) {\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }" if (parenthesized_expression "(((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit))" ( (binary_expression "((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)) &&\n                 (0 < nLimit)" (parenthesized_expression "((pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0))" ( (binary_expression "(pSVar39->pLimit != (Expr *)0x0) &&\n                  (iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)" (parenthesized_expression "(pSVar39->pLimit != (Expr *)0x0)" ( (binary_expression "pSVar39->pLimit != (Expr *)0x0" (field_expression "pSVar39->pLimit" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0)" ( (comma_expression "iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit), iVar26 != 0" (assignment_expression "iVar26 = sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit)" identifier = (call_expression "sqlite3ExprIsInteger(pSVar39->pLimit->pLeft,&nLimit)" identifier (argument_list "(pSVar39->pLimit->pLeft,&nLimit)" ( (field_expression "pSVar39->pLimit->pLeft" (field_expression "pSVar39->pLimit" identifier -> field_identifier) -> field_identifier) , (pointer_expression "&nLimit" & identifier) )))) , (binary_expression "iVar26 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(0 < nLimit)" ( (binary_expression "0 < nLimit" number_literal < identifier) ))) )) (compound_statement "{\n                sVar12 = p->nSelectRow;\n                uVar15 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }\n              }" { (expression_statement "sVar12 = p->nSelectRow;" (assignment_expression "sVar12 = p->nSelectRow" identifier = (field_expression "p->nSelectRow" identifier -> field_identifier)) ;) (expression_statement "uVar15 = nLimit >> 0x1f;" (assignment_expression "uVar15 = nLimit >> 0x1f" identifier = (binary_expression "nLimit >> 0x1f" identifier >> number_literal)) ;) (if_statement "if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }" if (parenthesized_expression "(nLimit < 8)" ( (binary_expression "nLimit < 8" identifier < number_literal) )) (compound_statement "{\n                  if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }" { (if_statement "if (nLimit == 1) {\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" if (parenthesized_expression "(nLimit == 1)" ( (binary_expression "nLimit == 1" identifier == number_literal) )) (compound_statement "{\n                    if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }" { (if_statement "if (0 < sVar12) {\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }" if (parenthesized_expression "(0 < sVar12)" ( (binary_expression "0 < sVar12" number_literal < identifier) )) (compound_statement "{\n                      sVar12 = 0;\n                      goto LAB_000a1cbb;\n                    }" { (expression_statement "sVar12 = 0;" (assignment_expression "sVar12 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a1cbb;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" else (compound_statement "{\n                    uVar31 = nLimit;\n                    uVar36 = uVar15;\n                    sVar7 = 0x28;\n                    do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);\n                    if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" { (expression_statement "uVar31 = nLimit;" (assignment_expression "uVar31 = nLimit" identifier = identifier) ;) (expression_statement "uVar36 = uVar15;" (assignment_expression "uVar36 = uVar15" identifier = identifier) ;) (expression_statement "sVar7 = 0x28;" (assignment_expression "sVar7 = 0x28" identifier = number_literal) ;) (do_statement "do {\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    } while (uVar6 < 8);" do (compound_statement "{\n                      sVar32 = sVar7;\n                      uVar6 = uVar31 * 2;\n                      if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;\n                      uVar36 = 0;\n                      uVar31 = uVar6;\n                      sVar7 = sVar32 + -10;\n                    }" { (expression_statement "sVar32 = sVar7;" (assignment_expression "sVar32 = sVar7" identifier = identifier) ;) (expression_statement "uVar6 = uVar31 * 2;" (assignment_expression "uVar6 = uVar31 * 2" identifier = (binary_expression "uVar31 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0) break;" if (parenthesized_expression "((uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0)" ( (binary_expression "(uVar36 & 0x7fffffff) != 0 || (int)uVar31 < 0" (binary_expression "(uVar36 & 0x7fffffff) != 0" (parenthesized_expression "(uVar36 & 0x7fffffff)" ( (binary_expression "uVar36 & 0x7fffffff" identifier & number_literal) )) != number_literal) || (binary_expression "(int)uVar31 < 0" (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "uVar31 = uVar6;" (assignment_expression "uVar31 = uVar6" identifier = identifier) ;) (expression_statement "sVar7 = sVar32 + -10;" (assignment_expression "sVar7 = sVar32 + -10" identifier = (binary_expression "sVar32 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < 8)" ( (binary_expression "uVar6 < 8" identifier < number_literal) )) ;) (if_statement "if ((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12) {\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" if (parenthesized_expression "((short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12)" ( (binary_expression "(short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7]) < sVar12" (cast_expression "(short)(sVar32 + -0x14 + (&a_14957)[uVar6 & 7])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar32 + -0x14 + (&a_14957)[uVar6 & 7])" ( (binary_expression "sVar32 + -0x14 + (&a_14957)[uVar6 & 7]" (binary_expression "sVar32 + -0x14" identifier + number_literal) + (subscript_expression "(&a_14957)[uVar6 & 7]" (parenthesized_expression "(&a_14957)" ( (pointer_expression "&a_14957" & identifier) )) [ (binary_expression "uVar6 & 7" identifier & number_literal) ])) ))) < identifier) )) (compound_statement "{\n                      sVar12 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" { (expression_statement "sVar12 = 0x28;" (assignment_expression "sVar12 = 0x28" identifier = number_literal) ;) (expression_statement "local_bc = nLimit;" (assignment_expression "local_bc = nLimit" identifier = identifier) ;) (do_statement "do {\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      } while (local_bc < 8);" do (compound_statement "{\n                        sVar12 = sVar12 + -10;\n                        bVar41 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar15 * 2 + (uint)bVar41 != 0) break;\n                        uVar15 = 0;\n                      }" { (expression_statement "sVar12 = sVar12 + -10;" (assignment_expression "sVar12 = sVar12 + -10" identifier = (binary_expression "sVar12 + -10" identifier + number_literal)) ;) (expression_statement "bVar41 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar41 = CARRY4(local_bc,local_bc)" identifier = (call_expression "CARRY4(local_bc,local_bc)" identifier (argument_list "(local_bc,local_bc)" ( identifier , identifier )))) ;) (expression_statement "local_bc = local_bc * 2;" (assignment_expression "local_bc = local_bc * 2" identifier = (binary_expression "local_bc * 2" identifier * number_literal)) ;) (if_statement "if (uVar15 * 2 + (uint)bVar41 != 0) break;" if (parenthesized_expression "(uVar15 * 2 + (uint)bVar41 != 0)" ( (binary_expression "uVar15 * 2 + (uint)bVar41 != 0" (binary_expression "uVar15 * 2 + (uint)bVar41" (binary_expression "uVar15 * 2" identifier * number_literal) + (cast_expression "(uint)bVar41" ( (type_descriptor "uint" type_identifier) ) identifier)) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_bc < 8)" ( (binary_expression "local_bc < 8" identifier < number_literal) )) ;) (goto_statement "goto LAB_000a1ca8;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }" else (compound_statement "{\n                  if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }\n                  uVar36 = 0x3c - uVar36;\n                  bVar10 = (byte)uVar36 & 0x1f;\n                  uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                  if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }\n                  if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }\n                }" { (if_statement "if (nLimit < 0) {\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }\n                  else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                    uVar36 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = uVar36 ^ 0x1f;\n                  }" { (expression_statement "uVar36 = 0x1f;" (assignment_expression "uVar36 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit < 0) {\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                      for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }" { (for_statement "for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }" for ( ; (binary_expression "uVar15 >> uVar36 == 0" (binary_expression "uVar15 >> uVar36" identifier >> identifier) == number_literal) ; (assignment_expression "uVar36 = uVar36 - 1" identifier = (binary_expression "uVar36 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar36 = uVar36 ^ 0x1f;" (assignment_expression "uVar36 = uVar36 ^ 0x1f" identifier = (binary_expression "uVar36 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }" else (compound_statement "{\n                    uVar36 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }\n                    uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                  }" { (expression_statement "uVar36 = 0x1f;" (assignment_expression "uVar36 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }" if (parenthesized_expression "(nLimit != 0)" ( (binary_expression "nLimit != 0" identifier != number_literal) )) (compound_statement "{\n                      for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }\n                    }" { (for_statement "for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                      }" for ( ; (binary_expression "(uint)nLimit >> uVar36 == 0" (binary_expression "(uint)nLimit >> uVar36" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) == number_literal) ; (assignment_expression "uVar36 = uVar36 - 1" identifier = (binary_expression "uVar36 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar36 = (uVar36 ^ 0x1f) + 0x20;" (assignment_expression "uVar36 = (uVar36 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar36 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar36 ^ 0x1f)" ( (binary_expression "uVar36 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar36 = 0x3c - uVar36;" (assignment_expression "uVar36 = 0x3c - uVar36" identifier = (binary_expression "0x3c - uVar36" number_literal - identifier)) ;) (expression_statement "bVar10 = (byte)uVar36 & 0x1f;" (assignment_expression "bVar10 = (byte)uVar36 & 0x1f" identifier = (binary_expression "(byte)uVar36 & 0x1f" (cast_expression "(byte)uVar36" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;" (assignment_expression "uVar31 = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10" identifier = (binary_expression "(uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10" (binary_expression "(uint)nLimit >> bVar10" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "uVar15 << 0x20 - bVar10" identifier << (binary_expression "0x20 - bVar10" number_literal - identifier)))) ;) (if_statement "if ((uVar36 & 0x20) != 0) {\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }" if (parenthesized_expression "((uVar36 & 0x20) != 0)" ( (binary_expression "(uVar36 & 0x20) != 0" (parenthesized_expression "(uVar36 & 0x20)" ( (binary_expression "uVar36 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);\n                  }" { (expression_statement "uVar31 = uVar15 >> ((byte)uVar36 & 0x1f);" (assignment_expression "uVar31 = uVar15 >> ((byte)uVar36 & 0x1f)" identifier = (binary_expression "uVar15 >> ((byte)uVar36 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar36 & 0x1f)" ( (binary_expression "(byte)uVar36 & 0x1f" (cast_expression "(byte)uVar36" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12) {\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }" if (parenthesized_expression "((short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12)" ( (binary_expression "(short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]) < sVar12" (cast_expression "(short)((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7])" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7])" ( (binary_expression "(short)uVar36 * 10 + 0x1e + (&a_14957)[uVar31 & 7]" (binary_expression "(short)uVar36 * 10 + 0x1e" (binary_expression "(short)uVar36 * 10" (cast_expression "(short)uVar36" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal) + (subscript_expression "(&a_14957)[uVar31 & 7]" (parenthesized_expression "(&a_14957)" ( (pointer_expression "&a_14957" & identifier) )) [ (binary_expression "uVar31 & 7" identifier & number_literal) ])) ))) < identifier) )) (compound_statement "{\n                    if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }\n                    uVar36 = 0x3c - uVar36;\n                    sVar12 = (short)uVar36 * 10 + 0x28;\n                    bVar10 = (byte)uVar36 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;\n                    if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];\nLAB_000a1cbb:\n                    p->nSelectRow = sVar12;\n                  }" { (if_statement "if (nLimit < 0) {\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }\n                    else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                      uVar36 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = uVar36 ^ 0x1f;\n                    }" { (expression_statement "uVar36 = 0x1f;" (assignment_expression "uVar36 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit < 0) {\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                        for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }" { (for_statement "for (; uVar15 >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }" for ( ; (binary_expression "uVar15 >> uVar36 == 0" (binary_expression "uVar15 >> uVar36" identifier >> identifier) == number_literal) ; (assignment_expression "uVar36 = uVar36 - 1" identifier = (binary_expression "uVar36 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar36 = uVar36 ^ 0x1f;" (assignment_expression "uVar36 = uVar36 ^ 0x1f" identifier = (binary_expression "uVar36 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }" else (compound_statement "{\n                      uVar36 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }\n                      uVar36 = (uVar36 ^ 0x1f) + 0x20;\n                    }" { (expression_statement "uVar36 = 0x1f;" (assignment_expression "uVar36 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }" if (parenthesized_expression "(nLimit != 0)" ( (binary_expression "nLimit != 0" identifier != number_literal) )) (compound_statement "{\n                        for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }\n                      }" { (for_statement "for (; (uint)nLimit >> uVar36 == 0; uVar36 = uVar36 - 1) {\n                        }" for ( ; (binary_expression "(uint)nLimit >> uVar36 == 0" (binary_expression "(uint)nLimit >> uVar36" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) == number_literal) ; (assignment_expression "uVar36 = uVar36 - 1" identifier = (binary_expression "uVar36 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar36 = (uVar36 ^ 0x1f) + 0x20;" (assignment_expression "uVar36 = (uVar36 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar36 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar36 ^ 0x1f)" ( (binary_expression "uVar36 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar36 = 0x3c - uVar36;" (assignment_expression "uVar36 = 0x3c - uVar36" identifier = (binary_expression "0x3c - uVar36" number_literal - identifier)) ;) (expression_statement "sVar12 = (short)uVar36 * 10 + 0x28;" (assignment_expression "sVar12 = (short)uVar36 * 10 + 0x28" identifier = (binary_expression "(short)uVar36 * 10 + 0x28" (binary_expression "(short)uVar36 * 10" (cast_expression "(short)uVar36" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "bVar10 = (byte)uVar36 & 0x1f;" (assignment_expression "bVar10 = (byte)uVar36 & 0x1f" identifier = (binary_expression "(byte)uVar36 & 0x1f" (cast_expression "(byte)uVar36" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10;" (assignment_expression "local_bc = (uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10" identifier = (binary_expression "(uint)nLimit >> bVar10 | uVar15 << 0x20 - bVar10" (binary_expression "(uint)nLimit >> bVar10" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "uVar15 << 0x20 - bVar10" identifier << (binary_expression "0x20 - bVar10" number_literal - identifier)))) ;) (if_statement "if ((uVar36 & 0x20) != 0) {\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }" if (parenthesized_expression "((uVar36 & 0x20) != 0)" ( (binary_expression "(uVar36 & 0x20) != 0" (parenthesized_expression "(uVar36 & 0x20)" ( (binary_expression "uVar36 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      local_bc = uVar15 >> ((byte)uVar36 & 0x1f);\n                    }" { (expression_statement "local_bc = uVar15 >> ((byte)uVar36 & 0x1f);" (assignment_expression "local_bc = uVar15 >> ((byte)uVar36 & 0x1f)" identifier = (binary_expression "uVar15 >> ((byte)uVar36 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar36 & 0x1f)" ( (binary_expression "(byte)uVar36 & 0x1f" (cast_expression "(byte)uVar36" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (labeled_statement "LAB_000a1ca8:\n                    sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];" statement_identifier : (expression_statement "sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7];" (assignment_expression "sVar12 = sVar12 + -10 + (&a_14957)[local_bc & 7]" identifier = (binary_expression "sVar12 + -10 + (&a_14957)[local_bc & 7]" (binary_expression "sVar12 + -10" identifier + number_literal) + (subscript_expression "(&a_14957)[local_bc & 7]" (parenthesized_expression "(&a_14957)" ( (pointer_expression "&a_14957" & identifier) )) [ (binary_expression "local_bc & 7" identifier & number_literal) ]))) ;)) (labeled_statement "LAB_000a1cbb:\n                    p->nSelectRow = sVar12;" statement_identifier : (expression_statement "p->nSelectRow = sVar12;" (assignment_expression "p->nSelectRow = sVar12" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;)) })) }))) })) (if_statement "if (local_c4 != (Vdbe *)0x0) {\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }" if (parenthesized_expression "(local_c4 != (Vdbe *)0x0)" ( (binary_expression "local_c4 != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pVVar30 = (Vdbe *)(local_c8->nOp + -1);\n                if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }\n                pOVar27 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }\n                pOVar27->p2 = local_c8->nOp;\n              }" { (expression_statement "pVVar30 = (Vdbe *)(local_c8->nOp + -1);" (assignment_expression "pVVar30 = (Vdbe *)(local_c8->nOp + -1)" identifier = (cast_expression "(Vdbe *)(local_c8->nOp + -1)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c8->nOp + -1)" ( (binary_expression "local_c8->nOp + -1" (field_expression "local_c8->nOp" identifier -> field_identifier) + number_literal) )))) ;) (if_statement "if (-1 < (int)local_c4) {\n                  pVVar30 = local_c4;\n                }" if (parenthesized_expression "(-1 < (int)local_c4)" ( (binary_expression "-1 < (int)local_c4" number_literal < (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                  pVVar30 = local_c4;\n                }" { (expression_statement "pVVar30 = local_c4;" (assignment_expression "pVVar30 = local_c4" identifier = identifier) ;) })) (expression_statement "pOVar27 = (Op *)&dummy_22674;" (assignment_expression "pOVar27 = (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 (local_c8->db->mallocFailed == '\0') {\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }" if (parenthesized_expression "(local_c8->db->mallocFailed == '\0')" ( (binary_expression "local_c8->db->mallocFailed == '\0'" (field_expression "local_c8->db->mallocFailed" (field_expression "local_c8->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  pOVar27 = local_c8->aOp + (int)pVVar30;\n                }" { (expression_statement "pOVar27 = local_c8->aOp + (int)pVVar30;" (assignment_expression "pOVar27 = local_c8->aOp + (int)pVVar30" identifier = (binary_expression "local_c8->aOp + (int)pVVar30" (field_expression "local_c8->aOp" identifier -> field_identifier) + (cast_expression "(int)pVVar30" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pOVar27->p2 = local_c8->nOp;" (assignment_expression "pOVar27->p2 = local_c8->nOp" (field_expression "pOVar27->p2" identifier -> field_identifier) = (field_expression "local_c8->nOp" identifier -> field_identifier)) ;) })) (goto_statement "goto LAB_000a0ff8;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" else (compound_statement "{\n            if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            local_c4 = (Vdbe *)pParse->nTab;\n            pParse->nTab = (int)local_c4 + 2;\n            iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n            p->addrOpenEphm[0] = iVar26;\n            pSVar37 = p;\n            do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);\n            puVar1 = &pSVar35->selFlags;\n            *puVar1 = *puVar1 | 0x20;\n            nLimit = CONCAT31(nLimit._1_3_,1);\n            local_34 = 0;\n            local_2c._4_4_ = (char *)0x0;\n            local_30 = 0;\n            local_2c._0_4_ = 0;\n            local_38 = (uint)local_c4;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" { (if_statement "if ((uVar9 == 0x86) || (uVar9 == 0x84)) {\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" if (parenthesized_expression "((uVar9 == 0x86) || (uVar9 == 0x84))" ( (binary_expression "(uVar9 == 0x86) || (uVar9 == 0x84)" (parenthesized_expression "(uVar9 == 0x86)" ( (binary_expression "uVar9 == 0x86" identifier == number_literal) )) || (parenthesized_expression "(uVar9 == 0x84)" ( (binary_expression "uVar9 == 0x84" identifier == number_literal) ))) )) (compound_statement "{\n              local_c4 = (Vdbe *)dest.iSDParm;\n              if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,1);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              local_38 = (uint)local_c4;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_000a0696;\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }\n              pcVar13 = "%s USING TEMP B-TREE";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar39;\n              if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar17;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }\nLAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }\n              if (pParse->nErr == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" { (expression_statement "local_c4 = (Vdbe *)dest.iSDParm;" (assignment_expression "local_c4 = (Vdbe *)dest.iSDParm" identifier = (cast_expression "(Vdbe *)dest.iSDParm" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "dest.iSDParm" identifier . field_identifier))) ;) (if_statement "if (dest.eDest != '\x01') {\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }" if (parenthesized_expression "(dest.eDest != '\x01')" ( (binary_expression "dest.eDest != '\x01'" (field_expression "dest.eDest" identifier . field_identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                local_c4 = (Vdbe *)pParse->nTab;\n                pParse->nTab = (int)local_c4 + 1;\n                iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);\n                p->addrOpenEphm[0] = iVar26;\n                pSVar37 = p;\n                do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);\n                puVar1 = &pSVar35->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }" { (expression_statement "local_c4 = (Vdbe *)pParse->nTab;" (assignment_expression "local_c4 = (Vdbe *)pParse->nTab" identifier = (cast_expression "(Vdbe *)pParse->nTab" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nTab" identifier -> field_identifier))) ;) (expression_statement "pParse->nTab = (int)local_c4 + 1;" (assignment_expression "pParse->nTab = (int)local_c4 + 1" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "(int)local_c4 + 1" (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18)" identifier (argument_list "(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "p->addrOpenEphm[0] = iVar26;" (assignment_expression "p->addrOpenEphm[0] = iVar26" (subscript_expression "p->addrOpenEphm[0]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pSVar37 = p;" (assignment_expression "pSVar37 = p" identifier = identifier) ;) (do_statement "do {\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                } while (pSVar37 != (Select *)0x0);" do (compound_statement "{\n                  pSVar35 = pSVar37;\n                  pSVar37 = pSVar35->pNext;\n                }" { (expression_statement "pSVar35 = pSVar37;" (assignment_expression "pSVar35 = pSVar37" identifier = identifier) ;) (expression_statement "pSVar37 = pSVar35->pNext;" (assignment_expression "pSVar37 = pSVar35->pNext" identifier = (field_expression "pSVar35->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar37 != (Select *)0x0)" ( (binary_expression "pSVar37 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar1 = &pSVar35->selFlags;" (assignment_expression "puVar1 = &pSVar35->selFlags" identifier = (pointer_expression "&pSVar35->selFlags" & (field_expression "pSVar35->selFlags" identifier -> field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x20;" (assignment_expression "*puVar1 = *puVar1 | 0x20" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x20" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) })) (expression_statement "nLimit = CONCAT31(nLimit._1_3_,1);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,1)" identifier = (call_expression "CONCAT31(nLimit._1_3_,1)" identifier (argument_list "(nLimit._1_3_,1)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_38 = (uint)local_c4;" (assignment_expression "local_38 = (uint)local_c4" identifier = (cast_expression "(uint)local_c4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,pSVar39,(SelectDest *)&nLimit)" ( identifier , identifier , (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) ))))) ;) (if_statement "if (local_d0 != (Select *)0x0) goto LAB_000a0696;" if (parenthesized_expression "(local_d0 != (Select *)0x0)" ( (binary_expression "local_d0 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a0696;" goto statement_identifier ;)) (expression_statement "uVar9 = p->op;" (assignment_expression "uVar9 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (expression_statement "pEVar17 = p->pLimit;" (assignment_expression "pEVar17 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "p->pPrior = (Select *)0x0;" (assignment_expression "p->pPrior = (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->pLimit = (Expr *)0x0;" (assignment_expression "p->pLimit = (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (uVar9 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }" if (parenthesized_expression "(uVar9 == 0x86)" ( (binary_expression "uVar9 == 0x86" identifier == number_literal) )) (compound_statement "{\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar44 = "EXCEPT";\n              }" { (expression_statement "nLimit = CONCAT31(nLimit._1_3_,2);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,2)" identifier = (call_expression "CONCAT31(nLimit._1_3_,2)" identifier (argument_list "(nLimit._1_3_,2)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "pcVar44 = "EXCEPT";" (assignment_expression "pcVar44 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) }) (else_clause "else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }" else (compound_statement "{\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }\n              }" { (expression_statement "nLimit = CONCAT31(nLimit._1_3_,1);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,1)" identifier = (call_expression "CONCAT31(nLimit._1_3_,1)" identifier (argument_list "(nLimit._1_3_,1)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "pcVar44 = "UNION ALL";" (assignment_expression "pcVar44 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) (if_statement "if (uVar9 != 0x85) {\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }" if (parenthesized_expression "(uVar9 != 0x85)" ( (binary_expression "uVar9 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  pcVar44 = "INTERSECT";\n                  if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }\n                }" { (expression_statement "pcVar44 = "INTERSECT";" (assignment_expression "pcVar44 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) ;) (if_statement "if (uVar9 != 0x87) {\n                    pcVar44 = "UNION";\n                  }" if (parenthesized_expression "(uVar9 != 0x87)" ( (binary_expression "uVar9 != 0x87" identifier != number_literal) )) (compound_statement "{\n                    pcVar44 = "UNION";\n                  }" { (expression_statement "pcVar44 = "UNION";" (assignment_expression "pcVar44 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) })) })) }))) (expression_statement "pcVar13 = "%s USING TEMP B-TREE";" (assignment_expression "pcVar13 = "%s USING TEMP B-TREE"" identifier = (string_literal ""%s USING TEMP B-TREE"" " string_content ")) ;) (expression_statement "pSVar43 = (SelectDest *)&DAT_00000001;" (assignment_expression "pSVar43 = (SelectDest *)&DAT_00000001" identifier = (cast_expression "(SelectDest *)&DAT_00000001" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44)" identifier (argument_list "(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44)" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""%s USING TEMP B-TREE"" " string_content ") , identifier ))) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,p,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,p,(SelectDest *)&nLimit)" ( identifier , identifier , (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) ))))) ;) (expression_statement "local_c0 = p->pPrior;" (assignment_expression "local_c0 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "p->pOrderBy = (ExprList *)0x0;" (assignment_expression "p->pOrderBy = (ExprList *)0x0" (field_expression "p->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->pPrior = pSVar39;" (assignment_expression "p->pPrior = pSVar39" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (if_statement "if (p->op == 0x84) {\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }" if (parenthesized_expression "(p->op == 0x84)" ( (binary_expression "p->op == 0x84" (field_expression "p->op" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);\n                p->nSelectRow = LVar11;\n              }" { (expression_statement "LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow);" (assignment_expression "LVar11 = sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow)" identifier = (call_expression "sqlite3LogEstAdd(p->nSelectRow,pSVar39->nSelectRow)" identifier (argument_list "(p->nSelectRow,pSVar39->nSelectRow)" ( (field_expression "p->nSelectRow" identifier -> field_identifier) , (field_expression "pSVar39->nSelectRow" identifier -> field_identifier) )))) ;) (expression_statement "p->nSelectRow = LVar11;" (assignment_expression "p->nSelectRow = LVar11" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }" if (parenthesized_expression "(p->pLimit != (Expr *)0x0)" ( (binary_expression "p->pLimit != (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }" { (expression_statement "sqlite3ExprDeleteNN(psVar3,p->pLimit);" (call_expression "sqlite3ExprDeleteNN(psVar3,p->pLimit)" identifier (argument_list "(psVar3,p->pLimit)" ( identifier , (field_expression "p->pLimit" identifier -> field_identifier) ))) ;) })) (expression_statement "p->iLimit = 0;" (assignment_expression "p->iLimit = 0" (field_expression "p->iLimit" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->iOffset = 0;" (assignment_expression "p->iOffset = 0" (field_expression "p->iOffset" identifier -> field_identifier) = number_literal) ;) (expression_statement "p->pLimit = pEVar17;" (assignment_expression "p->pLimit = pEVar17" (field_expression "p->pLimit" identifier -> field_identifier) = identifier) ;) (if_statement "if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }" if (parenthesized_expression "((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0'))" ( (binary_expression "(dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')" (parenthesized_expression "(dest.eDest != '\x01')" ( (binary_expression "dest.eDest != '\x01'" (field_expression "dest.eDest" identifier . field_identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) && (parenthesized_expression "(psVar3->mallocFailed == '\0')" ( (binary_expression "psVar3->mallocFailed == '\0'" (field_expression "psVar3->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa183f;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);\n                iVar26 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\nLAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);\n              }" { (expression_statement "pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);" (assignment_expression "pDVar33 = (DistinctCtx *)(pParse->nLabel + -1)" identifier = (cast_expression "(DistinctCtx *)(pParse->nLabel + -1)" ( (type_descriptor "DistinctCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pSVar40 = (SortCtx *)(pParse->nLabel + -2);" (assignment_expression "pSVar40 = (SortCtx *)(pParse->nLabel + -2)" identifier = (cast_expression "(SortCtx *)(pParse->nLabel + -2)" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -2)" ( (binary_expression "pParse->nLabel + -2" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)pSVar40;" (assignment_expression "pParse->nLabel = (int)pSVar40" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar25 = 0xa183f;" (assignment_expression "iVar25 = 0xa183f" identifier = number_literal) ;) (expression_statement "computeLimitRegisters(pParse,p,(int)pDVar33);" (call_expression "computeLimitRegisters(pParse,p,(int)pDVar33)" identifier (argument_list "(pParse,p,(int)pDVar33)" ( identifier , identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43)" identifier (argument_list "(local_c8,0x25,(int)local_c4,(int)pDVar33,(int)pSVar43)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar26 = local_c8->nOp;" (assignment_expression "iVar26 = local_c8->nOp" identifier = (field_expression "local_c8->nOp" identifier -> field_identifier)) ;) (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)pcVar13,iVar25)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)&dest" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dest" & identifier)) , identifier , identifier , identifier , (cast_expression "(int)pcVar13" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pSVar40)" identifier (argument_list "(local_c8,(int)pSVar40)" ( identifier , (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43)" identifier (argument_list "(local_c8,5,(int)local_c4,iVar26,(int)pSVar43)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pDVar33)" identifier (argument_list "(local_c8,(int)pDVar33)" ( identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (labeled_statement "LAB_000a16d1:\n                sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x74,(int)local_c4,0,(int)pSVar43)" identifier (argument_list "(local_c8,0x74,(int)local_c4,0,(int)pSVar43)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) })) (labeled_statement "LAB_000a0ff8:\n              if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }" statement_identifier : (if_statement "if (p->pNext == (Select *)0x0) {\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }" if (parenthesized_expression "(p->pNext == (Select *)0x0)" ( (binary_expression "p->pNext == (Select *)0x0" (field_expression "p->pNext" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar26 = pParse->addrExplain;\n                if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }\n                pParse->addrExplain = iVar26;\n              }" { (expression_statement "iVar26 = pParse->addrExplain;" (assignment_expression "iVar26 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar26 != 0) {\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n                  pVVar30 = pParse->pVdbe;\n                  if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }\n                  pOVar27 = (Op *)&dummy_22674;\n                  if (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }\n                  iVar26 = pOVar27->p2;\n                }" { (expression_statement "pVVar30 = pParse->pVdbe;" (assignment_expression "pVVar30 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (iVar26 < 0) {\n                    iVar26 = pVVar30->nOp + -1;\n                  }" if (parenthesized_expression "(iVar26 < 0)" ( (binary_expression "iVar26 < 0" identifier < number_literal) )) (compound_statement "{\n                    iVar26 = pVVar30->nOp + -1;\n                  }" { (expression_statement "iVar26 = pVVar30->nOp + -1;" (assignment_expression "iVar26 = pVVar30->nOp + -1" identifier = (binary_expression "pVVar30->nOp + -1" (field_expression "pVVar30->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar27 = (Op *)&dummy_22674;" (assignment_expression "pOVar27 = (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 (pVVar30->db->mallocFailed == '\0') {\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }" if (parenthesized_expression "(pVVar30->db->mallocFailed == '\0')" ( (binary_expression "pVVar30->db->mallocFailed == '\0'" (field_expression "pVVar30->db->mallocFailed" (field_expression "pVVar30->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    pOVar27 = pVVar30->aOp + iVar26;\n                  }" { (expression_statement "pOVar27 = pVVar30->aOp + iVar26;" (assignment_expression "pOVar27 = pVVar30->aOp + iVar26" identifier = (binary_expression "pVVar30->aOp + iVar26" (field_expression "pVVar30->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "iVar26 = pOVar27->p2;" (assignment_expression "iVar26 = pOVar27->p2" identifier = (field_expression "pOVar27->p2" identifier -> field_identifier)) ;) })) (expression_statement "pParse->addrExplain = iVar26;" (assignment_expression "pParse->addrExplain = iVar26" (field_expression "pParse->addrExplain" identifier -> field_identifier) = identifier) ;) }))) (if_statement "if (pParse->nErr == 0) goto LAB_000a0282;" if (parenthesized_expression "(pParse->nErr == 0)" ( (binary_expression "pParse->nErr == 0" (field_expression "pParse->nErr" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_000a0282;" goto statement_identifier ;)) (goto_statement "goto LAB_000a028c;" goto statement_identifier ;) })) (expression_statement "local_c4 = (Vdbe *)pParse->nTab;" (assignment_expression "local_c4 = (Vdbe *)pParse->nTab" identifier = (cast_expression "(Vdbe *)pParse->nTab" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->nTab" identifier -> field_identifier))) ;) (expression_statement "pParse->nTab = (int)local_c4 + 2;" (assignment_expression "pParse->nTab = (int)local_c4 + 2" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "(int)local_c4 + 2" (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18)" identifier (argument_list "(local_c8,100,(int)local_c4,0,(int)in_stack_ffffff18)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "p->addrOpenEphm[0] = iVar26;" (assignment_expression "p->addrOpenEphm[0] = iVar26" (subscript_expression "p->addrOpenEphm[0]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pSVar37 = p;" (assignment_expression "pSVar37 = p" identifier = identifier) ;) (do_statement "do {\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            } while (pSVar37 != (Select *)0x0);" do (compound_statement "{\n              pSVar35 = pSVar37;\n              pSVar37 = pSVar35->pNext;\n            }" { (expression_statement "pSVar35 = pSVar37;" (assignment_expression "pSVar35 = pSVar37" identifier = identifier) ;) (expression_statement "pSVar37 = pSVar35->pNext;" (assignment_expression "pSVar37 = pSVar35->pNext" identifier = (field_expression "pSVar35->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar37 != (Select *)0x0)" ( (binary_expression "pSVar37 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar1 = &pSVar35->selFlags;" (assignment_expression "puVar1 = &pSVar35->selFlags" identifier = (pointer_expression "&pSVar35->selFlags" & (field_expression "pSVar35->selFlags" identifier -> field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x20;" (assignment_expression "*puVar1 = *puVar1 | 0x20" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x20" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "nLimit = CONCAT31(nLimit._1_3_,1);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,1)" identifier = (call_expression "CONCAT31(nLimit._1_3_,1)" identifier (argument_list "(nLimit._1_3_,1)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_38 = (uint)local_c4;" (assignment_expression "local_38 = (uint)local_c4" identifier = (cast_expression "(uint)local_c4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,pSVar39,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,pSVar39,(SelectDest *)&nLimit)" ( identifier , identifier , (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) ))))) ;) (if_statement "if (local_d0 == (Select *)0x0) {\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" if (parenthesized_expression "(local_d0 == (Select *)0x0)" ( (binary_expression "local_d0 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              uVar15 = (int)local_c4 + 1;\n              iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);\n              uVar9 = p->op;\n              pEVar17 = p->pLimit;\n              p->addrOpenEphm[1] = iVar26;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar44 = "EXCEPT";\n              if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }\n              iVar26 = 1;\n              local_38 = uVar15;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c0 = p->pPrior;\n              p->pPrior = pSVar39;\n              if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar17;\n              if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" { (expression_statement "uVar15 = (int)local_c4 + 1;" (assignment_expression "uVar15 = (int)local_c4 + 1" identifier = (binary_expression "(int)local_c4 + 1" (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,100,uVar15,0,(int)in_stack_ffffff18)" identifier (argument_list "(local_c8,100,uVar15,0,(int)in_stack_ffffff18)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)in_stack_ffffff18" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "uVar9 = p->op;" (assignment_expression "uVar9 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (expression_statement "pEVar17 = p->pLimit;" (assignment_expression "pEVar17 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "p->addrOpenEphm[1] = iVar26;" (assignment_expression "p->addrOpenEphm[1] = iVar26" (subscript_expression "p->addrOpenEphm[1]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "p->pPrior = (Select *)0x0;" (assignment_expression "p->pPrior = (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p->pLimit = (Expr *)0x0;" (assignment_expression "p->pLimit = (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar44 = "EXCEPT";" (assignment_expression "pcVar44 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) (if_statement "if ((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)) {\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }" if (parenthesized_expression "((uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87))" ( (binary_expression "(uVar9 != 0x86) && (pcVar44 = "INTERSECT", uVar9 != 0x87)" (parenthesized_expression "(uVar9 != 0x86)" ( (binary_expression "uVar9 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(pcVar44 = "INTERSECT", uVar9 != 0x87)" ( (comma_expression "pcVar44 = "INTERSECT", uVar9 != 0x87" (assignment_expression "pcVar44 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) , (binary_expression "uVar9 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n                pcVar44 = "UNION ALL";\n                if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }\n              }" { (expression_statement "pcVar44 = "UNION ALL";" (assignment_expression "pcVar44 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) (if_statement "if (uVar9 != 0x85) {\n                  pcVar44 = "UNION";\n                }" if (parenthesized_expression "(uVar9 != 0x85)" ( (binary_expression "uVar9 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  pcVar44 = "UNION";\n                }" { (expression_statement "pcVar44 = "UNION";" (assignment_expression "pcVar44 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) })) })) (expression_statement "iVar26 = 1;" (assignment_expression "iVar26 = 1" identifier = number_literal) ;) (expression_statement "local_38 = uVar15;" (assignment_expression "local_38 = uVar15" identifier = identifier) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44)" identifier (argument_list "(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44)" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""%s USING TEMP B-TREE"" " string_content ") , identifier ))) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,p,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,p,(SelectDest *)&nLimit)" ( identifier , identifier , (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) ))))) ;) (expression_statement "local_c0 = p->pPrior;" (assignment_expression "local_c0 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "p->pPrior = pSVar39;" (assignment_expression "p->pPrior = pSVar39" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (if_statement "if (pSVar39->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar39->nSelectRow;\n              }" if (parenthesized_expression "(pSVar39->nSelectRow < p->nSelectRow)" ( (binary_expression "pSVar39->nSelectRow < p->nSelectRow" (field_expression "pSVar39->nSelectRow" identifier -> field_identifier) < (field_expression "p->nSelectRow" identifier -> field_identifier)) )) (compound_statement "{\n                p->nSelectRow = pSVar39->nSelectRow;\n              }" { (expression_statement "p->nSelectRow = pSVar39->nSelectRow;" (assignment_expression "p->nSelectRow = pSVar39->nSelectRow" (field_expression "p->nSelectRow" identifier -> field_identifier) = (field_expression "pSVar39->nSelectRow" identifier -> field_identifier)) ;) })) (if_statement "if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }" if (parenthesized_expression "(p->pLimit != (Expr *)0x0)" ( (binary_expression "p->pLimit != (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }" { (expression_statement "sqlite3ExprDeleteNN(psVar3,p->pLimit);" (call_expression "sqlite3ExprDeleteNN(psVar3,p->pLimit)" identifier (argument_list "(psVar3,p->pLimit)" ( identifier , (field_expression "p->pLimit" identifier -> field_identifier) ))) ;) })) (expression_statement "p->pLimit = pEVar17;" (assignment_expression "p->pLimit = pEVar17" (field_expression "p->pLimit" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_d0 == (Select *)0x0) {\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }" if (parenthesized_expression "(local_d0 == (Select *)0x0)" ( (binary_expression "local_d0 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar40;\n                iVar25 = 0xa15e5;\n                computeLimitRegisters(pParse,p,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);\n                if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }\n                iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);\n                iVar14 = 0;\n                pSVar43 = pSVar20;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);\n                if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);\n                sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);\n                goto LAB_000a16d1;\n              }" { (expression_statement "pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);" (assignment_expression "pDVar33 = (DistinctCtx *)(pParse->nLabel + -1)" identifier = (cast_expression "(DistinctCtx *)(pParse->nLabel + -1)" ( (type_descriptor "DistinctCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pSVar40 = (SortCtx *)(pParse->nLabel + -2);" (assignment_expression "pSVar40 = (SortCtx *)(pParse->nLabel + -2)" identifier = (cast_expression "(SortCtx *)(pParse->nLabel + -2)" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -2)" ( (binary_expression "pParse->nLabel + -2" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)pSVar40;" (assignment_expression "pParse->nLabel = (int)pSVar40" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar25 = 0xa15e5;" (assignment_expression "iVar25 = 0xa15e5" identifier = number_literal) ;) (expression_statement "computeLimitRegisters(pParse,p,(int)pDVar33);" (call_expression "computeLimitRegisters(pParse,p,(int)pDVar33)" identifier (argument_list "(pParse,p,(int)pDVar33)" ( identifier , identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26)" identifier (argument_list "(local_c8,0x25,(int)local_c4,(int)pDVar33,iVar26)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (if_statement "if (pParse->nTempReg == '\0') {\n                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }\n                else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\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                  pSVar20 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar20;\n                }" { (expression_statement "pSVar20 = (SelectDest *)(pParse->nMem + 1);" (assignment_expression "pSVar20 = (SelectDest *)(pParse->nMem + 1)" identifier = (cast_expression "(SelectDest *)(pParse->nMem + 1)" ( (type_descriptor "SelectDest *" 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)pSVar20;" (assignment_expression "pParse->nMem = (int)pSVar20" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }" else (compound_statement "{\n                  bVar10 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar10;\n                  pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];\n                }" { (expression_statement "bVar10 = pParse->nTempReg - 1;" (assignment_expression "bVar10 = pParse->nTempReg - 1" identifier = (binary_expression "pParse->nTempReg - 1" (field_expression "pParse->nTempReg" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pParse->nTempReg = bVar10;" (assignment_expression "pParse->nTempReg = bVar10" (field_expression "pParse->nTempReg" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar20 = (SelectDest *)pParse->aTempReg[bVar10];" (assignment_expression "pSVar20 = (SelectDest *)pParse->aTempReg[bVar10]" identifier = (cast_expression "(SelectDest *)pParse->aTempReg[bVar10]" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pParse->aTempReg[bVar10]" (field_expression "pParse->aTempReg" identifier -> field_identifier) [ identifier ]))) ;) }))) (expression_statement "iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26)" identifier (argument_list "(local_c8,0x7e,(int)local_c4,(int)pSVar20,iVar26)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , identifier )))) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pSVar43 = pSVar20;" (assignment_expression "pSVar43 = pSVar20" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0);" (call_expression "sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0)" identifier (argument_list "(local_c8,0x1d,uVar15,(int)pSVar40,(int)pSVar20,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (if_statement "if (pSVar20 != (SelectDest *)0x0) {\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }" if (parenthesized_expression "(pSVar20 != (SelectDest *)0x0)" ( (binary_expression "pSVar20 != (SelectDest *)0x0" identifier != (cast_expression "(SelectDest *)0x0" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  iVar25 = 0xa1664;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar20);\n                }" { (expression_statement "iVar25 = 0xa1664;" (assignment_expression "iVar25 = 0xa1664" identifier = number_literal) ;) (expression_statement "sqlite3ReleaseTempReg(pParse,(int)pSVar20);" (call_expression "sqlite3ReleaseTempReg(pParse,(int)pSVar20)" identifier (argument_list "(pParse,(int)pSVar20)" ( identifier , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,iVar14\n                                ,iVar25)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)&dest" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dest" & identifier)) , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pSVar40);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pSVar40)" identifier (argument_list "(local_c8,(int)pSVar40)" ( identifier , (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c8,5,(int)local_c4,iVar26,(int)pSVar43)" identifier (argument_list "(local_c8,5,(int)local_c4,iVar26,(int)pSVar43)" ( identifier , number_literal , (cast_expression "(int)local_c4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pDVar33);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pDVar33)" identifier (argument_list "(local_c8,(int)pDVar33)" ( identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x74,uVar15,0,(int)pSVar43)" identifier (argument_list "(local_c8,0x74,uVar15,0,(int)pSVar43)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (goto_statement "goto LAB_000a16d1;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a0ff8;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000a0696:\n          pDest->iSdst = dest.iSdst;" statement_identifier : (expression_statement "pDest->iSdst = dest.iSdst;" (assignment_expression "pDest->iSdst = dest.iSdst" (field_expression "pDest->iSdst" identifier -> field_identifier) = (field_expression "dest.iSdst" identifier . field_identifier)) ;)) (expression_statement "pDest->nSdst = dest.nSdst;" (assignment_expression "pDest->nSdst = dest.nSdst" (field_expression "pDest->nSdst" identifier -> field_identifier) = (field_expression "dest.nSdst" identifier . field_identifier)) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "pSVar38 = p->pSrc;" (assignment_expression "pSVar38 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "local_c0 = (Select *)p->pEList->nExpr;" (assignment_expression "local_c0 = (Select *)p->pEList->nExpr" identifier = (cast_expression "(Select *)p->pEList->nExpr" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "local_c4 = pParse->pVdbe;" (assignment_expression "local_c4 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "local_d0 = p->pPrior;" (assignment_expression "local_d0 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (if_statement "if (p->pWin == (Window *)0x0) {\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }\n        else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }" if (parenthesized_expression "(p->pWin == (Window *)0x0)" ( (binary_expression "p->pWin == (Window *)0x0" (field_expression "p->pWin" identifier -> field_identifier) == (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }\n        }" { (labeled_statement "LAB_000a035e:\n          iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);" statement_identifier : (expression_statement "iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);" (assignment_expression "iVar26 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24)" identifier = (call_expression "sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24)" identifier (argument_list "((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , identifier , identifier , (cast_expression "(char *)in_stack_ffffff24" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (if_statement "if (iVar26 == 0) {\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }" if (parenthesized_expression "(iVar26 == 0)" ( (binary_expression "iVar26 == 0" identifier == number_literal) )) (compound_statement "{\n            pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar33;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar33);\n            pEVar17 = p->pLimit;\n            iVar26 = pSVar38->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar25 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar18 = p->pOrderBy;\n            if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }\n            uVar15 = pParse->nTab;\n            local_bc = uVar15 + 1;\n            pParse->nTab = local_bc;\n            pSVar20 = (SelectDest *)(pParse->nMem + 1);\n            pPVar45 = pParse;\n            local_38 = uVar15;\n            if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar18;\n            p->pLimit = pEVar17;\n          }" { (expression_statement "pDVar33 = (DistinctCtx *)(pParse->nLabel + -1);" (assignment_expression "pDVar33 = (DistinctCtx *)(pParse->nLabel + -1)" identifier = (cast_expression "(DistinctCtx *)(pParse->nLabel + -1)" ( (type_descriptor "DistinctCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)pDVar33;" (assignment_expression "pParse->nLabel = (int)pDVar33" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "p->nSelectRow = 0x140;" (assignment_expression "p->nSelectRow = 0x140" (field_expression "p->nSelectRow" identifier -> field_identifier) = number_literal) ;) (expression_statement "computeLimitRegisters(pParse,p,(int)pDVar33);" (call_expression "computeLimitRegisters(pParse,p,(int)pDVar33)" identifier (argument_list "(pParse,p,(int)pDVar33)" ( identifier , identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pEVar17 = p->pLimit;" (assignment_expression "pEVar17 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "iVar26 = pSVar38->nSrc;" (assignment_expression "iVar26 = pSVar38->nSrc" identifier = (field_expression "pSVar38->nSrc" identifier -> field_identifier)) ;) (expression_statement "p->pLimit = (Expr *)0x0;" (assignment_expression "p->pLimit = (Expr *)0x0" (field_expression "p->pLimit" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar25 = p->iLimit;" (assignment_expression "iVar25 = p->iLimit" identifier = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (expression_statement "p->iLimit = 0;" (assignment_expression "p->iLimit = 0" (field_expression "p->iLimit" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar14 = p->iOffset;" (assignment_expression "iVar14 = p->iOffset" identifier = (field_expression "p->iOffset" identifier -> field_identifier)) ;) (expression_statement "p->iOffset = 0;" (assignment_expression "p->iOffset = 0" (field_expression "p->iOffset" identifier -> field_identifier) = number_literal) ;) (expression_statement "pEVar18 = p->pOrderBy;" (assignment_expression "pEVar18 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) ;) (if_statement "if (iVar26 < 1) {\nLAB_000a0405:\n              local_b4 = 0;\n            }\n            else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }" if (parenthesized_expression "(iVar26 < 1)" ( (binary_expression "iVar26 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_000a0405:\n              local_b4 = 0;\n            }" { (labeled_statement "LAB_000a0405:\n              local_b4 = 0;" statement_identifier : (expression_statement "local_b4 = 0;" (assignment_expression "local_b4 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }" else (compound_statement "{\n              bVar10 = pSVar38->a[0].fg.field_0x1;\n              iVar16 = 0;\n              while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }\n              local_b4 = pSVar38->a[iVar16].iCursor;\n            }" { (expression_statement "bVar10 = pSVar38->a[0].fg.field_0x1;" (assignment_expression "bVar10 = pSVar38->a[0].fg.field_0x1" identifier = (field_expression "pSVar38->a[0].fg.field_0x1" (field_expression "pSVar38->a[0].fg" (subscript_expression "pSVar38->a[0]" (field_expression "pSVar38->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier)) ;) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (while_statement "while ((bVar10 & 0x20) == 0) {\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }" while (parenthesized_expression "((bVar10 & 0x20) == 0)" ( (binary_expression "(bVar10 & 0x20) == 0" (parenthesized_expression "(bVar10 & 0x20)" ( (binary_expression "bVar10 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if (iVar16 + 1 == iVar26) goto LAB_000a0405;\n                bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);\n                iVar16 = iVar16 + 1;\n              }" { (if_statement "if (iVar16 + 1 == iVar26) goto LAB_000a0405;" if (parenthesized_expression "(iVar16 + 1 == iVar26)" ( (binary_expression "iVar16 + 1 == iVar26" (binary_expression "iVar16 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_000a0405;" goto statement_identifier ;)) (expression_statement "bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1);" (assignment_expression "bVar10 = *(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1)" identifier = (pointer_expression "*(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1)" * (cast_expression "(byte *)((int)&pSVar38[1].a[iVar16].regReturn + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSVar38[1].a[iVar16].regReturn + 1)" ( (binary_expression "(int)&pSVar38[1].a[iVar16].regReturn + 1" (cast_expression "(int)&pSVar38[1].a[iVar16].regReturn" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar38[1].a[iVar16].regReturn" & (field_expression "pSVar38[1].a[iVar16].regReturn" (subscript_expression "pSVar38[1].a[iVar16]" (field_expression "pSVar38[1].a" (subscript_expression "pSVar38[1]" identifier [ number_literal ]) . field_identifier) [ identifier ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) })) (expression_statement "local_b4 = pSVar38->a[iVar16].iCursor;" (assignment_expression "local_b4 = pSVar38->a[iVar16].iCursor" identifier = (field_expression "pSVar38->a[iVar16].iCursor" (subscript_expression "pSVar38->a[iVar16]" (field_expression "pSVar38->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) }))) (expression_statement "uVar15 = pParse->nTab;" (assignment_expression "uVar15 = pParse->nTab" identifier = (field_expression "pParse->nTab" identifier -> field_identifier)) ;) (expression_statement "local_bc = uVar15 + 1;" (assignment_expression "local_bc = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "pParse->nTab = local_bc;" (assignment_expression "pParse->nTab = local_bc" (field_expression "pParse->nTab" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar20 = (SelectDest *)(pParse->nMem + 1);" (assignment_expression "pSVar20 = (SelectDest *)(pParse->nMem + 1)" identifier = (cast_expression "(SelectDest *)(pParse->nMem + 1)" ( (type_descriptor "SelectDest *" 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 "pPVar45 = pParse;" (assignment_expression "pPVar45 = pParse" identifier = identifier) ;) (expression_statement "local_38 = uVar15;" (assignment_expression "local_38 = uVar15" identifier = identifier) ;) (if_statement "if (p->op == 0x84) {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }\n            else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }" if (parenthesized_expression "(p->op == 0x84)" ( (binary_expression "p->op == 0x84" (field_expression "p->op" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,6);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              pParse->nTab = uVar15 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pcVar44 = "SETUP";\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }\n            }" { (if_statement "if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }" if (parenthesized_expression "(pEVar18 != (ExprList *)0x0)" ( (binary_expression "pEVar18 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                nLimit = CONCAT31(nLimit._1_3_,8);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                pParse->nTab = uVar15 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                iVar26 = extraout_ECX_00;\n                pSVar39 = local_c0;\n                goto LAB_000a049c;\n              }" { (expression_statement "nLimit = CONCAT31(nLimit._1_3_,8);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,8)" identifier = (call_expression "CONCAT31(nLimit._1_3_,8)" identifier (argument_list "(nLimit._1_3_,8)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "pParse->nTab = uVar15 + 2;" (assignment_expression "pParse->nTab = uVar15 + 2" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pParse->nMem = (int)pSVar20;" (assignment_expression "pParse->nMem = (int)pSVar20" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" identifier (argument_list "(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "iVar26 = extraout_ECX_00;" (assignment_expression "iVar26 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "pSVar39 = local_c0;" (assignment_expression "pSVar39 = local_c0" identifier = identifier) ;) (goto_statement "goto LAB_000a049c;" goto statement_identifier ;) })) (expression_statement "nLimit = CONCAT31(nLimit._1_3_,6);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,6)" identifier = (call_expression "CONCAT31(nLimit._1_3_,6)" identifier (argument_list "(nLimit._1_3_,6)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "pParse->nTab = uVar15 + 2;" (assignment_expression "pParse->nTab = uVar15 + 2" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pParse->nMem = (int)pSVar20;" (assignment_expression "pParse->nMem = (int)pSVar20" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pSVar39 = local_c0;" (assignment_expression "pSVar39 = local_c0" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" identifier (argument_list "(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);" (call_expression "sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39)" identifier (argument_list "(local_c4,100,uVar15,(int)local_c0,(int)pSVar39)" ( identifier , number_literal , identifier , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (labeled_statement "LAB_000a04f4:\n              if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }" statement_identifier : (if_statement "if (local_bc != 0) {\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }" if (parenthesized_expression "(local_bc != 0)" ( (binary_expression "local_bc != 0" identifier != number_literal) )) (compound_statement "{\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar26;\n              }" { (expression_statement "iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,100,local_bc,0,(int)pSVar39)" identifier (argument_list "(local_c4,100,local_bc,0,(int)pSVar39)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "p->selFlags = p->selFlags | 0x20;" (assignment_expression "p->selFlags = p->selFlags | 0x20" (field_expression "p->selFlags" identifier -> field_identifier) = (binary_expression "p->selFlags | 0x20" (field_expression "p->selFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "p->addrOpenEphm[0] = iVar26;" (assignment_expression "p->addrOpenEphm[0] = iVar26" (subscript_expression "p->addrOpenEphm[0]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ number_literal ]) = identifier) ;) }))) (expression_statement "p->pOrderBy = (ExprList *)0x0;" (assignment_expression "p->pOrderBy = (ExprList *)0x0" (field_expression "p->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d0->pNext = (Select *)0x0;" (assignment_expression "local_d0->pNext = (Select *)0x0" (field_expression "local_d0->pNext" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar44 = "SETUP";" (assignment_expression "pcVar44 = "SETUP"" identifier = (string_literal ""SETUP"" " string_content ")) ;) (expression_statement "pSVar43 = (SelectDest *)&DAT_00000001;" (assignment_expression "pSVar43 = (SelectDest *)&DAT_00000001" identifier = (cast_expression "(SelectDest *)&DAT_00000001" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"SETUP");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"SETUP")" identifier (argument_list "(pParse,'\x01',"SETUP")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""SETUP"" " string_content ") ))) ;) (expression_statement "iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);" (assignment_expression "iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit)" identifier = (call_expression "sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,local_d0,(SelectDest *)&nLimit)" ( identifier , identifier , (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) )))) ;) (expression_statement "local_d0->pNext = p;" (assignment_expression "local_d0->pNext = p" (field_expression "local_d0->pNext" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }" if (parenthesized_expression "(iVar26 == 0)" ( (binary_expression "iVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\n                if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;\n                pPVar45 = iContinue;\n                sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);\n                pSVar43 = pSVar20;\nLAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;\n                pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);\n                pSVar40 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar40;\n                if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);\n                if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }\n                pVVar30 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);\n              }" { (expression_statement "local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);" (assignment_expression "local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" identifier = (cast_expression "(Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" identifier (argument_list "(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);" (assignment_expression "iContinue = (Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43)" identifier = (cast_expression "(Parse *)sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43)" identifier (argument_list "(local_c4,0x80,local_b4,0,(int)pSVar43)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (if_statement "if (pEVar18 == (ExprList *)0x0) goto LAB_000a1b0c;" if (parenthesized_expression "(pEVar18 == (ExprList *)0x0)" ( (binary_expression "pEVar18 == (ExprList *)0x0" identifier == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1b0c;" goto statement_identifier ;)) (expression_statement "pPVar45 = iContinue;" (assignment_expression "pPVar45 = iContinue" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20)" identifier (argument_list "(local_c4,0x59,uVar15,pEVar18->nExpr + 1,(int)pSVar20)" ( identifier , number_literal , identifier , (binary_expression "pEVar18->nExpr + 1" (field_expression "pEVar18->nExpr" identifier -> field_identifier) + number_literal) , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pSVar43 = pSVar20;" (assignment_expression "pSVar43 = pSVar20" identifier = identifier) ;) (labeled_statement "LAB_000a191e:\n                local_a8 = (SelectDest *)&nLimit;" statement_identifier : (expression_statement "local_a8 = (SelectDest *)&nLimit;" (assignment_expression "local_a8 = (SelectDest *)&nLimit" identifier = (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier))) ;)) (expression_statement "pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43);" (assignment_expression "pPVar29 = (Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43)" identifier = (cast_expression "(Parse *)sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(local_c4,0x7a,uVar15,0,(int)pSVar43)" identifier (argument_list "(local_c4,0x7a,uVar15,0,(int)pSVar43)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "pSVar40 = (SortCtx *)(pParse->nLabel + -1);" (assignment_expression "pSVar40 = (SortCtx *)(pParse->nLabel + -1)" identifier = (cast_expression "(SortCtx *)(pParse->nLabel + -1)" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse->nLabel + -1)" ( (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse->nLabel = (int)pSVar40;" (assignment_expression "pParse->nLabel = (int)pSVar40" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar14) {\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n                  pSVar43 = (SelectDest *)&DAT_00000001;\n                  pPVar45 = pPVar29;\n                  sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);\n                  iContinue = pPVar29;\n                }" { (expression_statement "pSVar43 = (SelectDest *)&DAT_00000001;" (assignment_expression "pSVar43 = (SelectDest *)&DAT_00000001" identifier = (cast_expression "(SelectDest *)&DAT_00000001" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "pPVar45 = pPVar29;" (assignment_expression "pPVar45 = pPVar29" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x30,iVar14,(int)pSVar40,1)" identifier (argument_list "(local_c4,0x30,iVar14,(int)pSVar40,1)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "iContinue = pPVar29;" (assignment_expression "iContinue = pPVar29" identifier = identifier) ;) })) (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,\n                                (int)iContinue,(int)pPVar45)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)&dest" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dest" & identifier)) , identifier , identifier , identifier , (cast_expression "(int)iContinue" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pPVar45" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (iVar25 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }" if (parenthesized_expression "(iVar25 != 0)" ( (binary_expression "iVar25 != 0" identifier != number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);\n                }" { (expression_statement "sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43)" identifier (argument_list "(local_c4,0x3b,iVar25,(int)pDVar33,(int)pSVar43)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "pVVar30 = local_c4;" (assignment_expression "pVVar30 = local_c4" identifier = identifier) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c4,(int)pSVar40);" (call_expression "sqlite3VdbeResolveLabel(local_c4,(int)pSVar40)" identifier (argument_list "(local_c4,(int)pSVar40)" ( identifier , (cast_expression "(int)pSVar40" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }" if (parenthesized_expression "((p->selFlags & 8) == 0)" ( (binary_expression "(p->selFlags & 8) == 0" (parenthesized_expression "(p->selFlags & 8)" ( (binary_expression "p->selFlags & 8" (field_expression "p->selFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                  p->pPrior = (Select *)0x0;\n                  pcVar44 = (char *)0x1;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);\n                  sqlite3Select(pParse,p,local_a8);\n                  p->pPrior = local_d0;\n                }" { (expression_statement "p->pPrior = (Select *)0x0;" (assignment_expression "p->pPrior = (Select *)0x0" (field_expression "p->pPrior" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar44 = (char *)0x1;" (assignment_expression "pcVar44 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar30)" identifier (argument_list "(pParse,'\x01',"RECURSIVE STEP",pVVar30)" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""RECURSIVE STEP"" " string_content ") , identifier ))) ;) (expression_statement "sqlite3Select(pParse,p,local_a8);" (call_expression "sqlite3Select(pParse,p,local_a8)" identifier (argument_list "(pParse,p,local_a8)" ( identifier , identifier , identifier ))) ;) (expression_statement "p->pPrior = local_d0;" (assignment_expression "p->pPrior = local_d0" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }" else (compound_statement "{\n                  pcVar44 = "recursive aggregate queries not supported";\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );\n                }" { (expression_statement "pcVar44 = "recursive aggregate queries not supported";" (assignment_expression "pcVar44 = "recursive aggregate queries not supported"" identifier = (string_literal ""recursive aggregate queries not supported"" " string_content ")) ;) (expression_statement "sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 );" (call_expression "sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 )" identifier (argument_list "(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30\n                                 )" ( identifier , (string_literal ""recursive aggregate queries not supported"" " string_content ") , identifier , identifier ))) ;) }))) (expression_statement "sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44);" (call_expression "sqlite3VdbeAddOp3(local_c4,0xb,0,(int)local_c0,(int)pcVar44)" identifier (argument_list "(local_c4,0xb,0,(int)local_c0,(int)pcVar44)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pcVar44" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c4,(int)pDVar33);" (call_expression "sqlite3VdbeResolveLabel(local_c4,(int)pDVar33)" identifier (argument_list "(local_c4,(int)pDVar33)" ( identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) }) (else_clause "else {\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }" else (compound_statement "{\n              if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }\n              nLimit = CONCAT31(nLimit._1_3_,5);\n              local_34 = 0;\n              local_2c._4_4_ = (char *)0x0;\n              local_30 = 0;\n              local_2c._0_4_ = 0;\n              pParse->nMem = (int)pSVar20;\n              pSVar39 = local_c0;\n              sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);\n              pcVar44 = "SETUP";\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              pSVar43 = (SelectDest *)&DAT_00000001;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }\n            }" { (if_statement "if (pEVar18 != (ExprList *)0x0) {\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }" if (parenthesized_expression "(pEVar18 != (ExprList *)0x0)" ( (binary_expression "pEVar18 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                nLimit = CONCAT31(nLimit._1_3_,7);\n                local_34 = 0;\n                local_2c._4_4_ = (char *)0x0;\n                local_30 = 0;\n                local_2c._0_4_ = 0;\n                pParse->nMem = (int)pSVar20;\n                sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);\n                local_bc = 0;\n                iVar26 = extraout_ECX;\n                pSVar39 = local_c0;\nLAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;\n                pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);\n                iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);\n                sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);\n                local_2c._8_4_ = pEVar18;\n                goto LAB_000a04f4;\n              }" { (expression_statement "nLimit = CONCAT31(nLimit._1_3_,7);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,7)" identifier = (call_expression "CONCAT31(nLimit._1_3_,7)" identifier (argument_list "(nLimit._1_3_,7)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pParse->nMem = (int)pSVar20;" (assignment_expression "pParse->nMem = (int)pSVar20" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" identifier (argument_list "(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "iVar26 = extraout_ECX;" (assignment_expression "iVar26 = extraout_ECX" identifier = identifier) ;) (expression_statement "pSVar39 = local_c0;" (assignment_expression "pSVar39 = local_c0" identifier = identifier) ;) (labeled_statement "LAB_000a049c:\n                pPVar45 = (Parse *)0xa04a7;" statement_identifier : (expression_statement "pPVar45 = (Parse *)0xa04a7;" (assignment_expression "pPVar45 = (Parse *)0xa04a7" identifier = (cast_expression "(Parse *)0xa04a7" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26);" (assignment_expression "pKVar28 = multiSelectOrderByKeyInfo(pParse,p,iVar26)" identifier = (call_expression "multiSelectOrderByKeyInfo(pParse,p,iVar26)" identifier (argument_list "(pParse,p,iVar26)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39);" (assignment_expression "iVar26 = sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39)" identifier (argument_list "(local_c4,100,uVar15,pEVar18->nExpr + 2,(int)pSVar39)" ( identifier , number_literal , identifier , (binary_expression "pEVar18->nExpr + 2" (field_expression "pEVar18->nExpr" identifier -> field_identifier) + number_literal) , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9);" (call_expression "sqlite3VdbeChangeP4(local_c4,iVar26,(char *)pKVar28,-9)" identifier (argument_list "(local_c4,iVar26,(char *)pKVar28,-9)" ( identifier , identifier , (cast_expression "(char *)pKVar28" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "local_2c._8_4_ = pEVar18;" (assignment_expression "local_2c._8_4_ = pEVar18" (field_expression "local_2c._8_4_" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_000a04f4;" goto statement_identifier ;) })) (expression_statement "nLimit = CONCAT31(nLimit._1_3_,5);" (assignment_expression "nLimit = CONCAT31(nLimit._1_3_,5)" identifier = (call_expression "CONCAT31(nLimit._1_3_,5)" identifier (argument_list "(nLimit._1_3_,5)" ( (field_expression "nLimit._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_2c._4_4_ = (char *)0x0;" (assignment_expression "local_2c._4_4_ = (char *)0x0" (field_expression "local_2c._4_4_" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c._0_4_ = 0;" (assignment_expression "local_2c._0_4_ = 0" (field_expression "local_2c._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pParse->nMem = (int)pSVar20;" (assignment_expression "pParse->nMem = (int)pSVar20" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pSVar39 = local_c0;" (assignment_expression "pSVar39 = local_c0" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" identifier (argument_list "(local_c4,0x72,local_b4,(int)pSVar20,(int)local_c0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39);" (call_expression "sqlite3VdbeAddOp3(local_c4,100,uVar15,(int)local_c0,(int)pSVar39)" identifier (argument_list "(local_c4,100,uVar15,(int)local_c0,(int)pSVar39)" ( identifier , number_literal , identifier , (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pcVar44 = "SETUP";" (assignment_expression "pcVar44 = "SETUP"" identifier = (string_literal ""SETUP"" " string_content ")) ;) (expression_statement "p->pOrderBy = (ExprList *)0x0;" (assignment_expression "p->pOrderBy = (ExprList *)0x0" (field_expression "p->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d0->pNext = (Select *)0x0;" (assignment_expression "local_d0->pNext = (Select *)0x0" (field_expression "local_d0->pNext" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pSVar43 = (SelectDest *)&DAT_00000001;" (assignment_expression "pSVar43 = (SelectDest *)&DAT_00000001" identifier = (cast_expression "(SelectDest *)&DAT_00000001" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"SETUP");" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"SETUP")" identifier (argument_list "(pParse,'\x01',"SETUP")" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""SETUP"" " string_content ") ))) ;) (expression_statement "iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);" (assignment_expression "iVar26 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit)" identifier = (call_expression "sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,local_d0,(SelectDest *)&nLimit)" ( identifier , identifier , (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) )))) ;) (expression_statement "local_d0->pNext = p;" (assignment_expression "local_d0->pNext = p" (field_expression "local_d0->pNext" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar26 == 0) {\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }" if (parenthesized_expression "(iVar26 == 0)" ( (binary_expression "iVar26 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);\n                sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);\nLAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;\n                sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);\n                goto LAB_000a191e;\n              }" { (expression_statement "local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43);" (assignment_expression "local_c0 = (Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" identifier = (cast_expression "(Select *)\n                           sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" identifier (argument_list "(local_c4,0x25,uVar15,(int)pDVar33,(int)pSVar43)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x80,local_b4,0,(int)pSVar43)" identifier (argument_list "(local_c4,0x80,local_b4,0,(int)pSVar43)" ( identifier , number_literal , identifier , number_literal , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (labeled_statement "LAB_000a1b0c:\n                iContinue = (Parse *)pcVar44;" statement_identifier : (expression_statement "iContinue = (Parse *)pcVar44;" (assignment_expression "iContinue = (Parse *)pcVar44" identifier = (cast_expression "(Parse *)pcVar44" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43)" identifier (argument_list "(local_c4,0x7e,uVar15,(int)pSVar20,(int)pSVar43)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar20" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar43" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (goto_statement "goto LAB_000a191e;" goto statement_identifier ;) })) }))) (if_statement "if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }" if (parenthesized_expression "(p->pOrderBy != (ExprList *)0x0)" ( (binary_expression "p->pOrderBy != (ExprList *)0x0" (field_expression "p->pOrderBy" identifier -> field_identifier) != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }" { (expression_statement "exprListDeleteNN(pParse->db,p->pOrderBy);" (call_expression "exprListDeleteNN(pParse->db,p->pOrderBy)" identifier (argument_list "(pParse->db,p->pOrderBy)" ( (field_expression "pParse->db" identifier -> field_identifier) , (field_expression "p->pOrderBy" identifier -> field_identifier) ))) ;) })) (expression_statement "p->pOrderBy = pEVar18;" (assignment_expression "p->pOrderBy = pEVar18" (field_expression "p->pOrderBy" identifier -> field_identifier) = identifier) ;) (expression_statement "p->pLimit = pEVar17;" (assignment_expression "p->pLimit = pEVar17" (field_expression "p->pLimit" identifier -> field_identifier) = identifier) ;) })) }) (else_clause "else {\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }" else (compound_statement "{\nLAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }" { (labeled_statement "LAB_000a0251:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");" (call_expression "sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries")" identifier (argument_list "(pParse,"cannot use window functions in recursive queries")" ( identifier , (string_literal ""cannot use window functions in recursive queries"" " string_content ") ))) ;)) }))) (if_statement "if (pParse->nErr == 0) {\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }" if (parenthesized_expression "(pParse->nErr == 0)" ( (binary_expression "pParse->nErr == 0" (field_expression "pParse->nErr" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          local_c0 = (Select *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }\nLAB_000a028c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }\n          goto LAB_0009fe71;\n        }" { (expression_statement "local_c0 = (Select *)0x0;" (assignment_expression "local_c0 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d0 = (Select *)0x0;" (assignment_expression "local_d0 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a0282:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }" statement_identifier : (if_statement "if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }" if (parenthesized_expression "((p->selFlags & 0x20) != 0)" ( (binary_expression "(p->selFlags & 0x20) != 0" (parenthesized_expression "(p->selFlags & 0x20)" ( (binary_expression "p->selFlags & 0x20" (field_expression "p->selFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }\n          }" { (expression_statement "puVar4 = (undefined1 *)p->pEList->nExpr;" (assignment_expression "puVar4 = (undefined1 *)p->pEList->nExpr" identifier = (cast_expression "(undefined1 *)p->pEList->nExpr" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);" (assignment_expression "pKVar28 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1)" identifier = (call_expression "sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1)" identifier (argument_list "(psVar3,(int)puVar4,1)" ( identifier , (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal )))) ;) (if_statement "if (pKVar28 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }" if (parenthesized_expression "(pKVar28 == (KeyInfo *)0x0)" ( (binary_expression "pKVar28 == (KeyInfo *)0x0" identifier == (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_d0 = (Select *)0x7;\n            }" { (expression_statement "local_d0 = (Select *)0x7;" (assignment_expression "local_d0 = (Select *)0x7" identifier = (cast_expression "(Select *)0x7" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }" else (compound_statement "{\n              if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }\n              do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar24 = pKVar28->nRef - 1;\n              pKVar28->nRef = uVar24;\n              if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }\n            }" { (if_statement "if (0 < (int)puVar4) {\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }" if (parenthesized_expression "(0 < (int)puVar4)" ( (binary_expression "0 < (int)puVar4" number_literal < (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                pSVar39 = (Select *)0x0;\n                do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);\n              }" { (expression_statement "pSVar39 = (Select *)0x0;" (assignment_expression "pSVar39 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                } while ((Select *)puVar4 != pSVar39);" do (compound_statement "{\n                  pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);\n                  pKVar28->aColl[(int)pSVar39] = pCVar19;\n                  if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }\n                  pSVar39 = (Select *)&pSVar39->field_0x1;\n                }" { (expression_statement "pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39);" (assignment_expression "pCVar19 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39)" identifier = (call_expression "multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39)" identifier (argument_list "(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar39)" ( identifier , (cast_expression "(Select *)&p->pEList" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->pEList" & (field_expression "p->pEList" identifier -> field_identifier))) , (cast_expression "(int)p->pPrior" ( (type_descriptor "int" primitive_type) ) (field_expression "p->pPrior" identifier -> field_identifier)) , identifier )))) ;) (expression_statement "pKVar28->aColl[(int)pSVar39] = pCVar19;" (assignment_expression "pKVar28->aColl[(int)pSVar39] = pCVar19" (subscript_expression "pKVar28->aColl[(int)pSVar39]" (field_expression "pKVar28->aColl" identifier -> field_identifier) [ (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (if_statement "if (pCVar19 == (CollSeq *)0x0) {\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }" if (parenthesized_expression "(pCVar19 == (CollSeq *)0x0)" ( (binary_expression "pCVar19 == (CollSeq *)0x0" identifier == (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;\n                  }" { (expression_statement "pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl;" (assignment_expression "pKVar28->aColl[(int)pSVar39] = psVar3->pDfltColl" (subscript_expression "pKVar28->aColl[(int)pSVar39]" (field_expression "pKVar28->aColl" identifier -> field_identifier) [ (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (field_expression "psVar3->pDfltColl" identifier -> field_identifier)) ;) })) (expression_statement "pSVar39 = (Select *)&pSVar39->field_0x1;" (assignment_expression "pSVar39 = (Select *)&pSVar39->field_0x1" identifier = (cast_expression "(Select *)&pSVar39->field_0x1" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar39->field_0x1" & (field_expression "pSVar39->field_0x1" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "((Select *)puVar4 != pSVar39)" ( (binary_expression "(Select *)puVar4 != pSVar39" (cast_expression "(Select *)puVar4" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) })) (do_statement "do {\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);" do (compound_statement "{\n                iVar26 = 0;\n                while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }\n                p = p->pPrior;\n              }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (while_statement "while (iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25) {\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }" while (parenthesized_expression "(iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25)" ( (comma_expression "iVar25 = p->addrOpenEphm[iVar26], -1 < iVar25" (assignment_expression "iVar25 = p->addrOpenEphm[iVar26]" identifier = (subscript_expression "p->addrOpenEphm[iVar26]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ identifier ])) , (binary_expression "-1 < iVar25" number_literal < identifier)) )) (compound_statement "{\n                  puVar8 = puVar4;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }\n                  DAT_001075d8 = puVar8;\n                  pKVar28->nRef = pKVar28->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);\n                  p->addrOpenEphm[iVar26] = -1;\n                  if (iVar26 == 1) break;\n                  iVar26 = 1;\n                }" { (expression_statement "puVar8 = puVar4;" (assignment_expression "puVar8 = puVar4" identifier = identifier) ;) (if_statement "if (local_c8->db->mallocFailed == '\0') {\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }" if (parenthesized_expression "(local_c8->db->mallocFailed == '\0')" ( (binary_expression "local_c8->db->mallocFailed == '\0'" (field_expression "local_c8->db->mallocFailed" (field_expression "local_c8->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    local_c8->aOp[iVar25].p2 = (int)puVar4;\n                    puVar8 = DAT_001075d8;\n                  }" { (expression_statement "local_c8->aOp[iVar25].p2 = (int)puVar4;" (assignment_expression "local_c8->aOp[iVar25].p2 = (int)puVar4" (field_expression "local_c8->aOp[iVar25].p2" (subscript_expression "local_c8->aOp[iVar25]" (field_expression "local_c8->aOp" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar8 = DAT_001075d8;" (assignment_expression "puVar8 = DAT_001075d8" identifier = identifier) ;) })) (expression_statement "DAT_001075d8 = puVar8;" (assignment_expression "DAT_001075d8 = puVar8" identifier = identifier) ;) (expression_statement "pKVar28->nRef = pKVar28->nRef + 1;" (assignment_expression "pKVar28->nRef = pKVar28->nRef + 1" (field_expression "pKVar28->nRef" identifier -> field_identifier) = (binary_expression "pKVar28->nRef + 1" (field_expression "pKVar28->nRef" identifier -> field_identifier) + number_literal)) ;) (expression_statement "sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9);" (call_expression "sqlite3VdbeChangeP4(local_c8,iVar25,(char *)pKVar28,-9)" identifier (argument_list "(local_c8,iVar25,(char *)pKVar28,-9)" ( identifier , identifier , (cast_expression "(char *)pKVar28" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "p->addrOpenEphm[iVar26] = -1;" (assignment_expression "p->addrOpenEphm[iVar26] = -1" (subscript_expression "p->addrOpenEphm[iVar26]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (if_statement "if (iVar26 == 1) break;" if (parenthesized_expression "(iVar26 == 1)" ( (binary_expression "iVar26 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar26 = 1;" (assignment_expression "iVar26 = 1" identifier = number_literal) ;) })) (expression_statement "p = p->pPrior;" (assignment_expression "p = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(p != (Select *)0x0)" ( (binary_expression "p != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar24 = pKVar28->nRef - 1;" (assignment_expression "uVar24 = pKVar28->nRef - 1" identifier = (binary_expression "pKVar28->nRef - 1" (field_expression "pKVar28->nRef" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pKVar28->nRef = uVar24;" (assignment_expression "pKVar28->nRef = uVar24" (field_expression "pKVar28->nRef" identifier -> field_identifier) = identifier) ;) (if_statement "if (uVar24 == 0) {\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n                sqlite3DbFreeNN(pKVar28->db,pKVar28);\n              }" { (expression_statement "sqlite3DbFreeNN(pKVar28->db,pKVar28);" (call_expression "sqlite3DbFreeNN(pKVar28->db,pKVar28)" identifier (argument_list "(pKVar28->db,pKVar28)" ( (field_expression "pKVar28->db" identifier -> field_identifier) , identifier ))) ;) })) }))) }))) (labeled_statement "LAB_000a028c:\n          pDest->iSdst = dest.iSdst;" statement_identifier : (expression_statement "pDest->iSdst = dest.iSdst;" (assignment_expression "pDest->iSdst = dest.iSdst" (field_expression "pDest->iSdst" identifier -> field_identifier) = (field_expression "dest.iSdst" identifier . field_identifier)) ;)) (expression_statement "pDest->nSdst = dest.nSdst;" (assignment_expression "pDest->nSdst = dest.nSdst" (field_expression "pDest->nSdst" identifier -> field_identifier) = (field_expression "dest.nSdst" identifier . field_identifier)) ;) (if_statement "if (local_c0 != (Select *)0x0) {\n            clearSelect(psVar3,local_c0,1);\n          }" if (parenthesized_expression "(local_c0 != (Select *)0x0)" ( (binary_expression "local_c0 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            clearSelect(psVar3,local_c0,1);\n          }" { (expression_statement "clearSelect(psVar3,local_c0,1);" (call_expression "clearSelect(psVar3,local_c0,1)" identifier (argument_list "(psVar3,local_c0,1)" ( identifier , identifier , number_literal ))) ;) })) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) }) (else_clause "else {\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }" else (compound_statement "{\n        pEVar17 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pSVar37 = p->pPrior;\n        local_d0 = p;\n        if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);\n        if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }\n      }" { (expression_statement "pEVar17 = p->pLimit;" (assignment_expression "pEVar17 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (if_statement "if (p->pWin != (Window *)0x0) {\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" if (parenthesized_expression "(p->pWin != (Window *)0x0)" ( (binary_expression "p->pWin != (Window *)0x0" (field_expression "p->pWin" identifier -> field_identifier) != (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" { (if_statement "if ((uVar15 & 0x2000) != 0) goto LAB_000a0251;" if (parenthesized_expression "((uVar15 & 0x2000) != 0)" ( (binary_expression "(uVar15 & 0x2000) != 0" (parenthesized_expression "(uVar15 & 0x2000)" ( (binary_expression "uVar15 & 0x2000" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000a0251;" goto statement_identifier ;)) (goto_statement "goto LAB_0009ff43;" goto statement_identifier ;) })) (expression_statement "pSVar37 = p->pPrior;" (assignment_expression "pSVar37 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "local_d0 = p;" (assignment_expression "local_d0 = p" identifier = identifier) ;) (if_statement "if (pSVar37 == (Select *)0x0) {\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }\n        else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }" if (parenthesized_expression "(pSVar37 == (Select *)0x0)" ( (binary_expression "pSVar37 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a122a:\n          local_cc = (ExprList *)0x1;\n          pcVar44 = "";\n        }" { (labeled_statement "LAB_000a122a:\n          local_cc = (ExprList *)0x1;" statement_identifier : (expression_statement "local_cc = (ExprList *)0x1;" (assignment_expression "local_cc = (ExprList *)0x1" identifier = (cast_expression "(ExprList *)0x1" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar44 = "";" (assignment_expression "pcVar44 = """ identifier = (string_literal """" " ")) ;) }) (else_clause "else {\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }" else (compound_statement "{\n          local_cc = (ExprList *)0x1;\n          pSVar35 = pSVar37;\n          do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);\n          pcVar44 = "S";\n          if (local_cc == (ExprList *)0x1) goto LAB_000a122a;\n        }" { (expression_statement "local_cc = (ExprList *)0x1;" (assignment_expression "local_cc = (ExprList *)0x1" identifier = (cast_expression "(ExprList *)0x1" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pSVar35 = pSVar37;" (assignment_expression "pSVar35 = pSVar37" identifier = identifier) ;) (do_statement "do {\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          } while (local_d0->pPrior != (Select *)0x0);" do (compound_statement "{\n            local_d0 = pSVar35;\n            local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));\n            if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }\n            pSVar35 = local_d0->pPrior;\n          }" { (expression_statement "local_d0 = pSVar35;" (assignment_expression "local_d0 = pSVar35" identifier = identifier) ;) (expression_statement "local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0));" (assignment_expression "local_cc = (ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0))" identifier = (cast_expression "(ExprList *)((int)local_cc + (uint)(pEVar17 == (Expr *)0x0))" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_cc + (uint)(pEVar17 == (Expr *)0x0))" ( (binary_expression "(int)local_cc + (uint)(pEVar17 == (Expr *)0x0)" (cast_expression "(int)local_cc" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(pEVar17 == (Expr *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEVar17 == (Expr *)0x0)" ( (binary_expression "pEVar17 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )))) ;) (if_statement "if (local_d0->pWin != (Window *)0x0) {\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }" if (parenthesized_expression "(local_d0->pWin != (Window *)0x0)" ( (binary_expression "local_d0->pWin != (Window *)0x0" (field_expression "local_d0->pWin" identifier -> field_identifier) != (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;\n              pSVar38 = p->pSrc;\n              local_c0 = (Select *)p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar37;\n              goto LAB_000a035e;\n            }" { (if_statement "if ((uVar15 & 0x2000) == 0) goto LAB_0009ff43;" if (parenthesized_expression "((uVar15 & 0x2000) == 0)" ( (binary_expression "(uVar15 & 0x2000) == 0" (parenthesized_expression "(uVar15 & 0x2000)" ( (binary_expression "uVar15 & 0x2000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0009ff43;" goto statement_identifier ;)) (expression_statement "pSVar38 = p->pSrc;" (assignment_expression "pSVar38 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "local_c0 = (Select *)p->pEList->nExpr;" (assignment_expression "local_c0 = (Select *)p->pEList->nExpr" identifier = (cast_expression "(Select *)p->pEList->nExpr" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "local_c4 = pParse->pVdbe;" (assignment_expression "local_c4 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "local_d0 = pSVar37;" (assignment_expression "local_d0 = pSVar37" identifier = identifier) ;) (goto_statement "goto LAB_000a035e;" goto statement_identifier ;) })) (expression_statement "pSVar35 = local_d0->pPrior;" (assignment_expression "pSVar35 = local_d0->pPrior" identifier = (field_expression "local_d0->pPrior" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(local_d0->pPrior != (Select *)0x0)" ( (binary_expression "local_d0->pPrior != (Select *)0x0" (field_expression "local_d0->pPrior" identifier -> field_identifier) != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pcVar44 = "S";" (assignment_expression "pcVar44 = "S"" identifier = (string_literal ""S"" " string_content ")) ;) (if_statement "if (local_cc == (ExprList *)0x1) goto LAB_000a122a;" if (parenthesized_expression "(local_cc == (ExprList *)0x1)" ( (binary_expression "local_cc == (ExprList *)0x1" identifier == (cast_expression "(ExprList *)0x1" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a122a;" goto statement_identifier ;)) }))) (expression_statement "sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44);" (call_expression "sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44)" identifier (argument_list "(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_cc,pcVar44)" ( identifier , (char_literal "'\0'" ' escape_sequence ') , (string_literal ""SCAN %d CONSTANT ROW%s"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (pEVar17 == (Expr *)0x0) {\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }\n        else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }" if (parenthesized_expression "(pEVar17 == (Expr *)0x0)" ( (binary_expression "pEVar17 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);\n        }" { (do_statement "do {\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          } while (local_d0 != (Select *)0x0);" do (compound_statement "{\n            selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n            local_d0->nSelectRow = (LogEst)local_cc;\n            local_d0 = local_d0->pNext;\n          }" { (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                            (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)&dest" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dest" & identifier)) , (cast_expression "(SortCtx *)&DAT_00000001" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier)) , (cast_expression "(DistinctCtx *)&DAT_00000001" ( (type_descriptor "DistinctCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier)) , (cast_expression "(SelectDest *)in_stack_ffffff18" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)in_stack_ffffff1c" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_ffffff20" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_d0->nSelectRow = (LogEst)local_cc;" (assignment_expression "local_d0->nSelectRow = (LogEst)local_cc" (field_expression "local_d0->nSelectRow" identifier -> field_identifier) = (cast_expression "(LogEst)local_cc" ( (type_descriptor "LogEst" type_identifier) ) identifier)) ;) (expression_statement "local_d0 = local_d0->pNext;" (assignment_expression "local_d0 = local_d0->pNext" identifier = (field_expression "local_d0->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(local_d0 != (Select *)0x0)" ( (binary_expression "local_d0 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }" else (compound_statement "{\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n        }" { (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)&DAT_00000001,\n                          (DistinctCtx *)&DAT_00000001,(SelectDest *)in_stack_ffffff18,\n                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20)" ( (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)&dest" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dest" & identifier)) , (cast_expression "(SortCtx *)&DAT_00000001" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier)) , (cast_expression "(DistinctCtx *)&DAT_00000001" ( (type_descriptor "DistinctCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier)) , (cast_expression "(SelectDest *)in_stack_ffffff18" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)in_stack_ffffff1c" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_ffffff20" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }))) }))) (expression_statement "local_d0 = (Select *)0x0;" (assignment_expression "local_d0 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pDest->iSdst = dest.iSdst;" (assignment_expression "pDest->iSdst = dest.iSdst" (field_expression "pDest->iSdst" identifier -> field_identifier) = (field_expression "dest.iSdst" identifier . field_identifier)) ;) (expression_statement "pDest->nSdst = dest.nSdst;" (assignment_expression "pDest->nSdst = dest.nSdst" (field_expression "pDest->nSdst" identifier -> field_identifier) = (field_expression "dest.nSdst" identifier . field_identifier)) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "uVar9 = p->op;" (assignment_expression "uVar9 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }" if (parenthesized_expression "(uVar9 == 0x86)" ( (binary_expression "uVar9 == 0x86" identifier == number_literal) )) (compound_statement "{\n      pcVar44 = "EXCEPT";\n    }" { (expression_statement "pcVar44 = "EXCEPT";" (assignment_expression "pcVar44 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) }) (else_clause "else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }" else (if_statement "if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }" if (parenthesized_expression "(uVar9 == 0x87)" ( (binary_expression "uVar9 == 0x87" identifier == number_literal) )) (compound_statement "{\n      pcVar44 = "INTERSECT";\n    }" { (expression_statement "pcVar44 = "INTERSECT";" (assignment_expression "pcVar44 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) ;) }) (else_clause "else {\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }" else (compound_statement "{\n      pcVar44 = "UNION";\n      if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }\n    }" { (expression_statement "pcVar44 = "UNION";" (assignment_expression "pcVar44 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) (if_statement "if (uVar9 == 0x85) {\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }" if (parenthesized_expression "(uVar9 == 0x85)" ( (binary_expression "uVar9 == 0x85" identifier == number_literal) )) (compound_statement "{\n        pcVar44 = "UNION ALL";\n        pcVar13 = "LIMIT";\n        goto LAB_0009fe40;\n      }" { (expression_statement "pcVar44 = "UNION ALL";" (assignment_expression "pcVar44 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) (expression_statement "pcVar13 = "LIMIT";" (assignment_expression "pcVar13 = "LIMIT"" identifier = (string_literal ""LIMIT"" " string_content ")) ;) (goto_statement "goto LAB_0009fe40;" goto statement_identifier ;) })) }))))) (expression_statement "pcVar13 = "LIMIT";" (assignment_expression "pcVar13 = "LIMIT"" identifier = (string_literal ""LIMIT"" " string_content ")) ;) }) (else_clause "else {\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }\n    pcVar13 = "ORDER BY";\n  }" else (compound_statement "{\n    uVar9 = p->op;\n    if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }\n    pcVar13 = "ORDER BY";\n  }" { (expression_statement "uVar9 = p->op;" (assignment_expression "uVar9 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (uVar9 == 0x86) {\n      pcVar44 = "EXCEPT";\n    }\n    else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }" if (parenthesized_expression "(uVar9 == 0x86)" ( (binary_expression "uVar9 == 0x86" identifier == number_literal) )) (compound_statement "{\n      pcVar44 = "EXCEPT";\n    }" { (expression_statement "pcVar44 = "EXCEPT";" (assignment_expression "pcVar44 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) }) (else_clause "else if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }" else (if_statement "if (uVar9 == 0x87) {\n      pcVar44 = "INTERSECT";\n    }\n    else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }" if (parenthesized_expression "(uVar9 == 0x87)" ( (binary_expression "uVar9 == 0x87" identifier == number_literal) )) (compound_statement "{\n      pcVar44 = "INTERSECT";\n    }" { (expression_statement "pcVar44 = "INTERSECT";" (assignment_expression "pcVar44 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) ;) }) (else_clause "else {\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }" else (compound_statement "{\n      if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }\n      pcVar44 = "UNION ALL";\n    }" { (if_statement "if (uVar9 != 0x85) {\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }" if (parenthesized_expression "(uVar9 != 0x85)" ( (binary_expression "uVar9 != 0x85" identifier != number_literal) )) (compound_statement "{\n        pcVar44 = "UNION";\n        pcVar13 = "ORDER BY";\n        goto LAB_0009fe40;\n      }" { (expression_statement "pcVar44 = "UNION";" (assignment_expression "pcVar44 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) (expression_statement "pcVar13 = "ORDER BY";" (assignment_expression "pcVar13 = "ORDER BY"" identifier = (string_literal ""ORDER BY"" " string_content ")) ;) (goto_statement "goto LAB_0009fe40;" goto statement_identifier ;) })) (expression_statement "pcVar44 = "UNION ALL";" (assignment_expression "pcVar44 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) }))))) (expression_statement "pcVar13 = "ORDER BY";" (assignment_expression "pcVar13 = "ORDER BY"" identifier = (string_literal ""ORDER BY"" " string_content ")) ;) }))) (labeled_statement "LAB_0009fe40:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);" (call_expression "sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar13,pcVar44)" identifier (argument_list "(pParse,"%s clause should come after %s not before",pcVar13,pcVar44)" ( identifier , (string_literal ""%s clause should come after %s not before"" " string_content ") , identifier , identifier ))) ;)) (expression_statement "pDest->iSdst = dest.iSdst;" (assignment_expression "pDest->iSdst = dest.iSdst" (field_expression "pDest->iSdst" identifier -> field_identifier) = (field_expression "dest.iSdst" identifier . field_identifier)) ;) (expression_statement "pDest->nSdst = dest.nSdst;" (assignment_expression "pDest->nSdst = dest.nSdst" (field_expression "pDest->nSdst" identifier -> field_identifier) = (field_expression "dest.nSdst" identifier . field_identifier)) ;) (expression_statement "local_d0 = (Select *)0x1;" (assignment_expression "local_d0 = (Select *)0x1" identifier = (cast_expression "(Select *)0x1" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0009fe71:\n  if (local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" statement_identifier : (if_statement "if (local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" if (parenthesized_expression "(local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_2c._12_4_ == *(u32 *)(in_GS_OFFSET + 0x14)" (field_expression "local_2c._12_4_" identifier . field_identifier) == (pointer_expression "*(u32 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(u32 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return (uint)local_d0;\n  }" { (return_statement "return (uint)local_d0;" return (cast_expression "(uint)local_d0" ( (type_descriptor "uint" type_identifier) ) identifier) ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "uint __regparm3 FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000d1450();\n}\n\n" (function_definition "uint __regparm3 FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000d1450();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,byte *param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000d1450();\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "short sVar5;" (sized_type_specifier "short" short) identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined2 uVar8;" type_identifier identifier ;) (declaration "short sVar9;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined4 uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "short sVar24;" (sized_type_specifier "short" short) identifier ;) (declaration "char *pcVar25;" primitive_type (pointer_declarator "*pcVar25" * identifier) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar30;" primitive_type identifier ;) (declaration "undefined8 uVar31;" type_identifier identifier ;) (declaration "byte *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "int *local_cc;" primitive_type (pointer_declarator "*local_cc" * identifier) ;) (declaration "int *local_c8;" primitive_type (pointer_declarator "*local_c8" * identifier) ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "int *local_b0;" primitive_type (pointer_declarator "*local_b0" * identifier) ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined4 local_74;" type_identifier identifier ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined1 local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x9fdad;" (assignment_expression "uStack_14 = 0x9fdad" identifier = number_literal) ;) (expression_statement "uVar31 = FUN_000d0ab3();" (assignment_expression "uVar31 = FUN_000d0ab3()" identifier = (call_expression "FUN_000d0ab3()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);" (assignment_expression "pcVar25 = (char *)((ulonglong)uVar31 >> 0x20)" identifier = (cast_expression "(char *)((ulonglong)uVar31 >> 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar31 >> 0x20)" ( (binary_expression "(ulonglong)uVar31 >> 0x20" (cast_expression "(ulonglong)uVar31" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar20 = (int *)uVar31;" (assignment_expression "piVar20 = (int *)uVar31" identifier = (cast_expression "(int *)uVar31" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar19 = *(int *)(pcVar25 + 0x34);" (assignment_expression "iVar19 = *(int *)(pcVar25 + 0x34)" identifier = (pointer_expression "*(int *)(pcVar25 + 0x34)" * (cast_expression "(int *)(pcVar25 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar25 + 0x34)" ( (binary_expression "pcVar25 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar15 = *piVar20;" (assignment_expression "iVar15 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_74 = *param_3;" (assignment_expression "local_74 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "local_70 = param_3[1];" (assignment_expression "local_70 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "local_6c = param_3[2];" (assignment_expression "local_6c = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (expression_statement "local_68 = param_3[3];" (assignment_expression "local_68 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (expression_statement "local_64 = param_3[4];" (assignment_expression "local_64 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "local_60 = param_3[5];" (assignment_expression "local_60 = param_3[5]" identifier = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "local_5c = param_3[6];" (assignment_expression "local_5c = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" if (parenthesized_expression "(*(int *)(iVar19 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x30) == 0" (pointer_expression "*(int *)(iVar19 + 0x30)" * (cast_expression "(int *)(iVar19 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x30)" ( (binary_expression "iVar19 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }" { (if_statement "if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }" if (parenthesized_expression "(*(int *)(iVar19 + 0x3c) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x3c) == 0" (pointer_expression "*(int *)(iVar19 + 0x3c)" * (cast_expression "(int *)(iVar19 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x3c)" ( (binary_expression "iVar19 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }" { (expression_statement "local_c8 = (int *)piVar20[2];" (assignment_expression "local_c8 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (if_statement "if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }" if (parenthesized_expression "(local_c8 == (int *)0x0)" ( (binary_expression "local_c8 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_c8 = (int *)FUN_00049b90();\n      }" { (expression_statement "local_c8 = (int *)FUN_00049b90();" (assignment_expression "local_c8 = (int *)FUN_00049b90()" identifier = (cast_expression "(int *)FUN_00049b90()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00049b90()" identifier (argument_list "()" ( ))))) ;) })) (if_statement "if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" if (parenthesized_expression "((char)local_74 == '\f')" ( (binary_expression "(char)local_74 == '\f'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\f'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" { (expression_statement "FUN_00049630(**(undefined4 **)(param_2 + 0x1c));" (call_expression "FUN_00049630(**(undefined4 **)(param_2 + 0x1c))" identifier (argument_list "(**(undefined4 **)(param_2 + 0x1c))" ( (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" * (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" * (cast_expression "(undefined4 **)(param_2 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ))) ;) (expression_statement "local_74 = CONCAT31(local_74._1_3_,0xe);" (assignment_expression "local_74 = CONCAT31(local_74._1_3_,0xe)" identifier = (call_expression "CONCAT31(local_74._1_3_,0xe)" identifier (argument_list "(local_74._1_3_,0xe)" ( (field_expression "local_74._1_3_" identifier . field_identifier) , number_literal )))) ;) })) (expression_statement "uVar12 = *(uint *)(param_2 + 4);" (assignment_expression "uVar12 = *(uint *)(param_2 + 4)" identifier = (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" if (parenthesized_expression "((uVar12 & 0x400) == 0)" ( (binary_expression "(uVar12 & 0x400) == 0" (parenthesized_expression "(uVar12 & 0x400)" ( (binary_expression "uVar12 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }" { (if_statement "if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }" if (parenthesized_expression "((uVar12 & 0x2000) == 0)" ( (binary_expression "(uVar12 & 0x2000) == 0" (parenthesized_expression "(uVar12 & 0x2000)" ( (binary_expression "uVar12 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }" { (labeled_statement "LAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);" statement_identifier : (expression_statement "local_b0 = *(int **)(param_2 + 0x30);" (assignment_expression "local_b0 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;)) (if_statement "if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }" if (parenthesized_expression "(local_b0 != (int *)0x0)" ( (binary_expression "local_b0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }" { (expression_statement "iVar15 = *piVar20;" (assignment_expression "iVar15 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar11 = piVar20[0xe] + -2;" (assignment_expression "iVar11 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar11;" (assignment_expression "piVar20[0xe] = iVar11" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar12 = (uint)*param_2;" (assignment_expression "uVar12 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "iVar29 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar29 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "iVar21 = *local_b0;" (assignment_expression "iVar21 = *local_b0" identifier = (pointer_expression "*local_b0" * identifier)) ;) (if_statement "if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }" if (parenthesized_expression "(((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc))" ( (binary_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)" (parenthesized_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0'))" ( (binary_expression "(uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')" (parenthesized_expression "(uVar12 != 0x85)" ( (binary_expression "uVar12 != 0x85" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(iVar15 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar15 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)" ( (comma_expression "local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc" (assignment_expression "local_cc = *(int **)(param_2 + 0x1c)" identifier = (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) , (binary_expression "0 < *local_cc" number_literal < (pointer_expression "*local_cc" * identifier))) ))) )) (compound_statement "{\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }" { (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" identifier = number_literal) ;) (do_statement "do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);" do (compound_statement "{\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              }" { (if_statement "if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" if (parenthesized_expression "(iVar21 < 1)" ( (binary_expression "iVar21 < 1" identifier < number_literal) )) (compound_statement "{\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }" { (if_statement "if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }" { (labeled_statement "LAB_000a000e:\n                    local_3c = 0;" statement_identifier : (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;)) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar13 = FUN_0002fd80();" (assignment_expression "iVar13 = FUN_0002fd80()" identifier = (call_expression "FUN_0002fd80()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }" { (expression_statement "local_d0 = (byte *)0x7;" (assignment_expression "local_d0 = (byte *)0x7" identifier = (cast_expression "(byte *)0x7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "*(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;" (assignment_expression "*(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400" (pointer_expression "*(uint *)(iVar13 + 4)" * (cast_expression "(uint *)(iVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 4)" ( (binary_expression "iVar13 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar13 + 4) | 0x400" (pointer_expression "*(uint *)(iVar13 + 4)" * (cast_expression "(uint *)(iVar13 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 4)" ( (binary_expression "iVar13 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(uint *)(iVar13 + 8) = uVar27;" (assignment_expression "*(uint *)(iVar13 + 8) = uVar27" (pointer_expression "*(uint *)(iVar13 + 8)" * (cast_expression "(uint *)(iVar13 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_b0 = (int *)FUN_00054ef0();" (assignment_expression "local_b0 = (int *)FUN_00054ef0()" identifier = (cast_expression "(int *)FUN_00054ef0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00054ef0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(int **)(param_2 + 0x30) = local_b0;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" if (parenthesized_expression "(local_b0 == (int *)0x0)" ( (binary_expression "local_b0 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }" { (expression_statement "cVar6 = *(char *)(iVar15 + 0x4d);" (assignment_expression "cVar6 = *(char *)(iVar15 + 0x4d)" identifier = (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" else (compound_statement "{\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" { (expression_statement "*(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;" (assignment_expression "*(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27" (pointer_expression "*(short *)(local_b0 + iVar21 * 4 + 4)" * (cast_expression "(short *)(local_b0 + iVar21 * 4 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + iVar21 * 4 + 4)" ( (binary_expression "local_b0 + iVar21 * 4 + 4" (binary_expression "local_b0 + iVar21 * 4" identifier + (binary_expression "iVar21 * 4" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "cVar6 = *(char *)(iVar15 + 0x4d);" (assignment_expression "cVar6 = *(char *)(iVar15 + 0x4d)" identifier = (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) ))))) ;) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) }))) (if_statement "if (cVar6 != '\0') break;" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "local_cc = *(int **)(param_2 + 0x1c);" (assignment_expression "local_cc = *(int **)(param_2 + 0x1c)" identifier = (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) })) }) (else_clause "else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" else (if_statement "if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" if (parenthesized_expression "(*(ushort *)(local_b0 + 4) != uVar27)" ( (binary_expression "*(ushort *)(local_b0 + 4) != uVar27" (pointer_expression "*(ushort *)(local_b0 + 4)" * (cast_expression "(ushort *)(local_b0 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 4)" ( (binary_expression "local_b0 + 4" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = local_b0 + 1;" (assignment_expression "piVar14 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) (do_statement "do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);" do (compound_statement "{\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (iVar13 == iVar21) goto LAB_000a000e;" if (parenthesized_expression "(iVar13 == iVar21)" ( (binary_expression "iVar13 == iVar21" identifier == identifier) )) (goto_statement "goto LAB_000a000e;" goto statement_identifier ;)) (expression_statement "puVar1 = (ushort *)(piVar14 + 7);" (assignment_expression "puVar1 = (ushort *)(piVar14 + 7)" identifier = (cast_expression "(ushort *)(piVar14 + 7)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar14 + 7)" ( (binary_expression "piVar14 + 7" identifier + number_literal) )))) ;) (expression_statement "piVar14 = piVar14 + 4;" (assignment_expression "piVar14 = piVar14 + 4" identifier = (binary_expression "piVar14 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar1 != uVar27)" ( (binary_expression "*puVar1 != uVar27" (pointer_expression "*puVar1" * identifier) != identifier) )) ;) })))) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar27 <= *local_cc)" ( (binary_expression "(int)uVar27 <= *local_cc" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= (pointer_expression "*local_cc" * identifier)) )) ;) })) (expression_statement "piVar14 = (int *)FUN_0002ef70();" (assignment_expression "piVar14 = (int *)FUN_0002ef70()" identifier = (cast_expression "(int *)FUN_0002ef70()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002ef70()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }" { (expression_statement "*piVar14 = iVar21;" (assignment_expression "*piVar14 = iVar21" (pointer_expression "*piVar14" * identifier) = identifier) ;) (if_statement "if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }" if (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) (compound_statement "{\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);" do (compound_statement "{\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                }" { (expression_statement "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;" (assignment_expression "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1" (pointer_expression "*(uint *)((int)piVar14 + iVar15 + 4)" * (cast_expression "(uint *)((int)piVar14 + iVar15 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar14 + iVar15 + 4)" ( (binary_expression "(int)piVar14 + iVar15 + 4" (binary_expression "(int)piVar14 + iVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (binary_expression "*(ushort *)(local_b0 + iVar15 + 4) - 1" (pointer_expression "*(ushort *)(local_b0 + iVar15 + 4)" * (cast_expression "(ushort *)(local_b0 + iVar15 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + iVar15 + 4)" ( (binary_expression "local_b0 + iVar15 + 4" (binary_expression "local_b0 + iVar15" identifier + identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "iVar15 = iVar15 + 4;" (assignment_expression "iVar15 = iVar15 + 4" identifier = (binary_expression "iVar15 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 * 4 != iVar15)" ( (binary_expression "iVar21 * 4 != iVar15" (binary_expression "iVar21 * 4" identifier * number_literal) != identifier) )) ;) })) (expression_statement "FUN_00050020();" (call_expression "FUN_00050020()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int **)(param_2 + 0x30) = local_b0;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = FUN_0005f2e0();" (assignment_expression "uVar16 = FUN_0005f2e0()" identifier = (call_expression "FUN_0005f2e0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar29 + 0x30) = uVar16;" (assignment_expression "*(undefined4 *)(iVar29 + 0x30) = uVar16" (pointer_expression "*(undefined4 *)(iVar29 + 0x30)" * (cast_expression "(undefined4 *)(iVar29 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x30)" ( (binary_expression "iVar29 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" if (parenthesized_expression "(uVar12 == 0x85)" ( (binary_expression "uVar12 == 0x85" identifier == number_literal) )) (compound_statement "{\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }" { (expression_statement "local_b0 = (int *)0x0;" (assignment_expression "local_b0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" else (compound_statement "{\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" { (expression_statement "iVar15 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar15 = **(int **)(param_2 + 0x1c)" identifier = (pointer_expression "**(int **)(param_2 + 0x1c)" * (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "local_94 = piVar20[0xb] + 1;" (assignment_expression "local_94 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = iVar15 + 1 + piVar20[0xb];" (assignment_expression "piVar20[0xb] = iVar15 + 1 + piVar20[0xb]" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = (binary_expression "iVar15 + 1 + piVar20[0xb]" (binary_expression "iVar15 + 1" identifier + number_literal) + (subscript_expression "piVar20[0xb]" identifier [ number_literal ]))) ;) (expression_statement "FUN_00049630(local_94);" (call_expression "FUN_00049630(local_94)" identifier (argument_list "(local_94)" ( identifier ))) ;) (expression_statement "local_b0 = (int *)FUN_0002fcc0();" (assignment_expression "local_b0 = (int *)FUN_0002fcc0()" identifier = (cast_expression "(int *)FUN_0002fcc0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002fcc0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" if (parenthesized_expression "((local_b0 != (int *)0x0) && (0 < iVar15))" ( (binary_expression "(local_b0 != (int *)0x0) && (0 < iVar15)" (parenthesized_expression "(local_b0 != (int *)0x0)" ( (binary_expression "local_b0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(0 < iVar15)" ( (binary_expression "0 < iVar15" number_literal < identifier) ))) )) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);" do (compound_statement "{\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "iVar18 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar18 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }" if (parenthesized_expression "((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))))))" ( (binary_expression "(iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))" (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) || (parenthesized_expression "(((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))" ( (parenthesized_expression "((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))))" ( (binary_expression "(*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))" (parenthesized_expression "(*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       )" ( (binary_expression "*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)" (binary_expression "*(int *)(iVar18 + 0x34) == 0" (pointer_expression "*(int *)(iVar18 + 0x34)" * (cast_expression "(int *)(iVar18 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x34)" ( (binary_expression "iVar18 + 0x34" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)" ( (comma_expression "iVar17 = FUN_0004ff90(iVar13), iVar17 == 0" (assignment_expression "iVar17 = FUN_0004ff90(iVar13)" identifier = (call_expression "FUN_0004ff90(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) , (binary_expression "iVar17 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))" ( (parenthesized_expression "(**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))" ( (binary_expression "**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)" (binary_expression "**(int **)(iVar18 + 0x1c) <= iVar13" (pointer_expression "**(int **)(iVar18 + 0x1c)" * (pointer_expression "*(int **)(iVar18 + 0x1c)" * (cast_expression "(int **)(iVar18 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + 0x1c)" ( (binary_expression "iVar18 + 0x1c" identifier + number_literal) ))))) <= identifier) || (parenthesized_expression "(iVar17 = FUN_0004f300(), iVar17 == 0)" ( (comma_expression "iVar17 = FUN_0004f300(), iVar17 == 0" (assignment_expression "iVar17 = FUN_0004f300()" identifier = (call_expression "FUN_0004f300()" identifier (argument_list "()" ( )))) , (binary_expression "iVar17 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) (compound_statement "{\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }" { (if_statement "if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }" if (parenthesized_expression "(iVar13 < **(int **)(param_2 + 0x1c))" ( (binary_expression "iVar13 < **(int **)(param_2 + 0x1c)" identifier < (pointer_expression "**(int **)(param_2 + 0x1c)" * (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) )) (compound_statement "{\n                      iVar17 = FUN_0004f300();\n                    }" { (expression_statement "iVar17 = FUN_0004f300();" (assignment_expression "iVar17 = FUN_0004f300()" identifier = (call_expression "FUN_0004f300()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n                      iVar17 = 0;\n                    }" else (compound_statement "{\n                      iVar17 = 0;\n                    }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }))) })) (expression_statement "local_b0[iVar13 + 5] = iVar17;" (assignment_expression "local_b0[iVar13 + 5] = iVar17" (subscript_expression "local_b0[iVar13 + 5]" identifier [ (binary_expression "iVar13 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)(local_b0[4] + iVar13) = 0;" (assignment_expression "*(undefined1 *)(local_b0[4] + iVar13) = 0" (pointer_expression "*(undefined1 *)(local_b0[4] + iVar13)" * (cast_expression "(undefined1 *)(local_b0[4] + iVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[4] + iVar13)" ( (binary_expression "local_b0[4] + iVar13" (subscript_expression "local_b0[4]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != iVar13)" ( (binary_expression "iVar15 != iVar13" identifier != identifier) )) ;) })) }))) (expression_statement "piVar14 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar14 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar29 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar29 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar29 + 0x38)" * (cast_expression "(undefined4 *)(iVar29 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x38)" ( (binary_expression "iVar29 + 0x38" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" if (parenthesized_expression "(((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2))" ( (binary_expression "((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)" (parenthesized_expression "((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0'))" ( (binary_expression "(piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')" (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" * (cast_expression "(char *)(*piVar20 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x4d)" ( (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(byte *)(piVar20 + 0x33) < 2)" ( (binary_expression "*(byte *)(piVar20 + 0x33) < 2" (pointer_expression "*(byte *)(piVar20 + 0x33)" * (cast_expression "(byte *)(piVar20 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20 + 0x33)" ( (binary_expression "piVar20 + 0x33" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" { (if_statement "if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" if (parenthesized_expression "(*(int *)(*piVar20 + 0x70) < *piVar14)" ( (binary_expression "*(int *)(*piVar20 + 0x70) < *piVar14" (pointer_expression "*(int *)(*piVar20 + 0x70)" * (cast_expression "(int *)(*piVar20 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x70)" ( (binary_expression "*piVar20 + 0x70" (pointer_expression "*piVar20" * identifier) + number_literal) )))) < (pointer_expression "*piVar14" * identifier)) )) (compound_statement "{\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }" { (expression_statement "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);" (call_expression "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14)" identifier (argument_list "(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14)" ( identifier , (binary_expression "unaff_EBP + 0x3462f" identifier + number_literal) , (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) , identifier ))) ;) }) (else_clause "else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" else (compound_statement "{\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" { (expression_statement "FUN_0005e800(unaff_EBP + 0x31e94);" (call_expression "FUN_0005e800(unaff_EBP + 0x31e94)" identifier (argument_list "(unaff_EBP + 0x31e94)" ( (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) ))) ;) }))) })) (if_statement "if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" if (parenthesized_expression "(((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2))))" ( (binary_expression "((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))" (parenthesized_expression "((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0))" ( (binary_expression "(*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)" (parenthesized_expression "(*(int *)(iVar29 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar29 + 0x34) == 0" (pointer_expression "*(int *)(iVar29 + 0x34)" * (cast_expression "(int *)(iVar29 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 0x34)" ( (binary_expression "iVar29 + 0x34" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int **)(iVar29 + 0x30) != (int *)0x0)" ( (binary_expression "*(int **)(iVar29 + 0x30) != (int *)0x0" (pointer_expression "*(int **)(iVar29 + 0x30)" * (cast_expression "(int **)(iVar29 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar29 + 0x30)" ( (binary_expression "iVar29 + 0x30" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))" ( (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2))" ( (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)" (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" * (cast_expression "(char *)(*piVar20 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x4d)" ( (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(*(byte *)(piVar20 + 0x33) < 2)" ( (binary_expression "*(byte *)(piVar20 + 0x33) < 2" (pointer_expression "*(byte *)(piVar20 + 0x33)" * (cast_expression "(byte *)(piVar20 + 0x33)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20 + 0x33)" ( (binary_expression "piVar20 + 0x33" identifier + number_literal) )))) < number_literal) ))) )) ))) )) (compound_statement "{\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" { (expression_statement "iVar15 = *(int *)(*piVar20 + 0x70);" (assignment_expression "iVar15 = *(int *)(*piVar20 + 0x70)" identifier = (pointer_expression "*(int *)(*piVar20 + 0x70)" * (cast_expression "(int *)(*piVar20 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + 0x70)" ( (binary_expression "*piVar20 + 0x70" (pointer_expression "*piVar20" * identifier) + number_literal) ))))) ;) (if_statement "if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" if (parenthesized_expression "(iVar15 < **(int **)(iVar29 + 0x30))" ( (binary_expression "iVar15 < **(int **)(iVar29 + 0x30)" identifier < (pointer_expression "**(int **)(iVar29 + 0x30)" * (pointer_expression "*(int **)(iVar29 + 0x30)" * (cast_expression "(int **)(iVar29 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar29 + 0x30)" ( (binary_expression "iVar29 + 0x30" identifier + number_literal) )))))) )) (compound_statement "{\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }" { (expression_statement "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);" (call_expression "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15)" identifier (argument_list "(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15)" ( identifier , (binary_expression "unaff_EBP + 0x3462f" identifier + number_literal) , (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) , identifier ))) ;) }) (else_clause "else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" else (compound_statement "{\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" { (expression_statement "FUN_0005e800(unaff_EBP + 0x31e94);" (call_expression "FUN_0005e800(unaff_EBP + 0x31e94)" identifier (argument_list "(unaff_EBP + 0x31e94)" ( (binary_expression "unaff_EBP + 0x31e94" identifier + number_literal) ))) ;) }))) })) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }" if (parenthesized_expression "((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0))" ( (binary_expression "(uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)" (parenthesized_expression "(uVar12 == 0x85)" ( (binary_expression "uVar12 == 0x85" identifier == number_literal) )) && (parenthesized_expression "(*(int *)(param_2 + 8) != 0)" ( (binary_expression "*(int *)(param_2 + 8) != 0" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }" { (expression_statement "local_9c = piVar20[0xb] + 1;" (assignment_expression "local_9c = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_90 = piVar20[0xb] + 2;" (assignment_expression "local_90 = piVar20[0xb] + 2" identifier = (binary_expression "piVar20[0xb] + 2" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = local_90;" (assignment_expression "piVar20[0xb] = local_90" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00049630(local_9c);" (call_expression "FUN_00049630(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) (expression_statement "FUN_00049630(local_90);" (call_expression "FUN_00049630(local_90)" identifier (argument_list "(local_90)" ( identifier ))) ;) }) (else_clause "else {\n              local_90 = 0;\n              local_9c = 0;\n            }" else (compound_statement "{\n              local_90 = 0;\n              local_9c = 0;\n            }" { (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) }))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00053f30();\n            }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58 = 0xd;" (assignment_expression "local_58 = 0xd" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar15 = piVar20[0xb];" (assignment_expression "iVar15 = piVar20[0xb]" identifier = (subscript_expression "piVar20[0xb]" identifier [ number_literal ])) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,0xd);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,0xd)" identifier = (call_expression "CONCAT31(local_3c._1_3_,0xd)" identifier (argument_list "(local_3c._1_3_,0xd)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_38 = iVar15 + 2;" (assignment_expression "local_38 = iVar15 + 2" identifier = (binary_expression "iVar15 + 2" identifier + number_literal)) ;) (expression_statement "local_54 = iVar15 + 1;" (assignment_expression "local_54 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar15 + 4;" (assignment_expression "piVar20[0xb] = iVar15 + 4" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = (binary_expression "iVar15 + 4" identifier + number_literal)) ;) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar13 = unaff_EBP + 0x31e87;" (assignment_expression "iVar13 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) (if_statement "if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }" if (parenthesized_expression "((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87))" ( (binary_expression "(bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (parenthesized_expression "(bVar7 != 0x86)" ( (binary_expression "bVar7 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" ( (comma_expression "iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87" (assignment_expression "iVar13 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) , (binary_expression "bVar7 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }" { (expression_statement "iVar13 = unaff_EBP + 0x31e73;" (assignment_expression "iVar13 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }" if (parenthesized_expression "(bVar7 != 0x85)" ( (binary_expression "bVar7 != 0x85" identifier != number_literal) )) (compound_statement "{\n                iVar13 = unaff_EBP + 0x31e8e;\n              }" { (expression_statement "iVar13 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar13 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) })) })) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32431,iVar13)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32431" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000493f0(0,piVar28[0x1a] + 1)" identifier (argument_list "(0,piVar28[0x1a] + 1)" ( number_literal , (binary_expression "piVar28[0x1a] + 1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*(int *)(iVar29 + 8) = local_9c;" (assignment_expression "*(int *)(iVar29 + 8) = local_9c" (pointer_expression "*(int *)(iVar29 + 8)" * (cast_expression "(int *)(iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 8)" ( (binary_expression "iVar29 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x3243c)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x3243c" identifier + number_literal) ))) ;) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar13 = piVar28[3];" (assignment_expression "iVar13 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(iVar13 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + 0x13) = 0" (pointer_expression "*(undefined1 *)(iVar13 + 0x13)" * (cast_expression "(undefined1 *)(iVar13 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x13)" ( (binary_expression "iVar13 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x1c)" * (cast_expression "(undefined4 *)(iVar13 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x1c)" ( (binary_expression "iVar13 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }" if (parenthesized_expression "(iVar18 < 0)" ( (binary_expression "iVar18 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar18 = piVar28[0x1a] + -1;\n            }" { (expression_statement "iVar18 = piVar28[0x1a] + -1;" (assignment_expression "iVar18 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar13 = unaff_EBP + 0x67823;" (assignment_expression "iVar13 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }" { (expression_statement "iVar13 = piVar28[0x19] + iVar18 * 0x14;" (assignment_expression "iVar13 = piVar28[0x19] + iVar18 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar18 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x14" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar13 + 8) = piVar28[0x1a];" (assignment_expression "*(int *)(iVar13 + 8) = piVar28[0x1a]" (pointer_expression "*(int *)(iVar13 + 8)" * (cast_expression "(int *)(iVar13 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 8)" ( (binary_expression "iVar13 + 8" identifier + number_literal) )))) = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000493f0(0,piVar28[0x1a] + 1)" identifier (argument_list "(0,piVar28[0x1a] + 1)" ( number_literal , (binary_expression "piVar28[0x1a] + 1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 8);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "uVar22 = *(undefined4 *)(param_2 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_2 + 8) = local_90;" (assignment_expression "*(int *)(param_2 + 8) = local_90" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32441)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32441)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32441" identifier + number_literal) ))) ;) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 8) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 8) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "iVar13 = piVar28[3];" (assignment_expression "iVar13 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(iVar13 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + 0x13) = 0" (pointer_expression "*(undefined1 *)(iVar13 + 0x13)" * (cast_expression "(undefined1 *)(iVar13 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x13)" ( (binary_expression "iVar13 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar13 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x1c)" * (cast_expression "(undefined4 *)(iVar13 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x1c)" ( (binary_expression "iVar13 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);" (assignment_expression "uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" identifier = (call_expression "FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" identifier (argument_list "(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" ( (pointer_expression "&local_4c" & identifier) , (pointer_expression "&local_48" & identifier) , identifier , (binary_expression "iVar15 + 3" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }" if (parenthesized_expression "(uVar12 - 0x84 < 2)" ( (binary_expression "uVar12 - 0x84 < 2" (binary_expression "uVar12 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }" { (expression_statement "local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);" (assignment_expression "local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" identifier = (call_expression "FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" identifier (argument_list "(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" ( (pointer_expression "&local_30" & identifier) , (pointer_expression "&local_2c" & identifier) , identifier , (binary_expression "iVar15 + 4" identifier + number_literal) , identifier , identifier , identifier )))) ;) })) (if_statement "if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }" if (parenthesized_expression "((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0))" ( (binary_expression "(local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)" (parenthesized_expression "(local_b0 != (int *)0x0)" ( (binary_expression "local_b0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)" ( (comma_expression "iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "iVar15 = *local_b0" identifier = (pointer_expression "*local_b0" * identifier)) , (comma_expression "*local_b0 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "*local_b0 = iVar15 + -1" (pointer_expression "*local_b0" * identifier) = (binary_expression "iVar15 + -1" identifier + number_literal)) , (binary_expression "iVar15 + -1 == 0" (binary_expression "iVar15 + -1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n              FUN_00023410();\n            }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar15 = iVar19;" (assignment_expression "iVar15 = iVar19" identifier = identifier) ;) (expression_statement "local_94 = iVar19;" (assignment_expression "local_94 = iVar19" identifier = identifier) ;) (if_statement "if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }" if (parenthesized_expression "(1 < uVar12 - 0x86)" ( (binary_expression "1 < uVar12 - 0x86" number_literal < (binary_expression "uVar12 - 0x86" identifier - number_literal)) )) (compound_statement "{\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }" { (expression_statement "iVar15 = FUN_00049630(local_88);" (assignment_expression "iVar15 = FUN_00049630(local_88)" identifier = (call_expression "FUN_00049630(local_88)" identifier (argument_list "(local_88)" ( identifier )))) ;) (expression_statement "local_94 = FUN_00049630(iVar19);" (assignment_expression "local_94 = FUN_00049630(iVar19)" identifier = (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" identifier = (call_expression "FUN_00024680()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" if (parenthesized_expression "(uVar12 == 0x87)" ( (binary_expression "uVar12 == 0x87" identifier == number_literal) )) (compound_statement "{\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }" { (if_statement "if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar29 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar29 + 2)" * (cast_expression "(short *)(iVar29 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 2)" ( (binary_expression "iVar29 + 2" identifier + number_literal) )))) < (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) )) (compound_statement "{\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar29 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar29 + 2)" (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = (pointer_expression "*(short *)(iVar29 + 2)" * (cast_expression "(short *)(iVar29 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 2)" ( (binary_expression "iVar29 + 2" identifier + number_literal) ))))) ;) })) (expression_statement "local_a8 = FUN_00049630(uVar16);" (assignment_expression "local_a8 = FUN_00049630(uVar16)" identifier = (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "local_b0 = (int *)iVar15;" (assignment_expression "local_b0 = (int *)iVar15" identifier = (cast_expression "(int *)iVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" else (compound_statement "{\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" { (expression_statement "local_b0 = (int *)FUN_00049630(uVar16);" (assignment_expression "local_b0 = (int *)FUN_00049630(uVar16)" identifier = (cast_expression "(int *)FUN_00049630(uVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))))) ;) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (expression_statement "local_a8 = FUN_00049630(uVar16);" (assignment_expression "local_a8 = FUN_00049630(uVar16)" identifier = (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier ))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (if_statement "if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }" if (parenthesized_expression "(uVar12 != 0x85)" ( (binary_expression "uVar12 != 0x85" identifier != number_literal) )) (compound_statement "{\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }" { (expression_statement "local_a8 = FUN_00049630(iVar15);" (assignment_expression "local_a8 = FUN_00049630(iVar15)" identifier = (call_expression "FUN_00049630(iVar15)" identifier (argument_list "(iVar15)" ( identifier )))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) })) }))) (expression_statement "iVar19 = piVar28[0x1a];" (assignment_expression "iVar19 = piVar28[0x1a]" identifier = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }" if (parenthesized_expression "(uVar12 - 0x84 < 2)" ( (binary_expression "uVar12 - 0x84 < 2" (binary_expression "uVar12 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              FUN_00049630(local_88);\n            }" { (expression_statement "FUN_00049630(local_88);" (call_expression "FUN_00049630(local_88)" identifier (argument_list "(local_88)" ( identifier ))) ;) })) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar15 = piVar28[0x1a] + -1;" (assignment_expression "iVar15 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }" if (parenthesized_expression "(-1 < iVar18)" ( (binary_expression "-1 < iVar18" number_literal < identifier) )) (compound_statement "{\n              iVar15 = iVar18;\n            }" { (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" identifier = identifier) ;) })) (expression_statement "iVar11 = unaff_EBP + 0x67823;" (assignment_expression "iVar11 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }" { (expression_statement "iVar11 = piVar28[0x19] + iVar15 * 0x14;" (assignment_expression "iVar11 = piVar28[0x19] + iVar15 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar15 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar15 * 0x14" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar11 + 8) = piVar28[0x1a];" (assignment_expression "*(int *)(iVar11 + 8) = piVar28[0x1a]" (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00049630(local_94);" (call_expression "FUN_00049630(local_94)" identifier (argument_list "(local_94)" ( identifier ))) ;) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "FUN_000436c0(0xfffffff1);" (call_expression "FUN_000436c0(0xfffffff1)" identifier (argument_list "(0xfffffff1)" ( number_literal ))) ;) (expression_statement "FUN_000493f0(local_30,iVar21);" (call_expression "FUN_000493f0(local_30,iVar21)" identifier (argument_list "(local_30,iVar21)" ( identifier , identifier ))) ;) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (if_statement "if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }" if (parenthesized_expression "(0 < piVar28[0x1a])" ( (binary_expression "0 < piVar28[0x1a]" number_literal < (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }" { (expression_statement "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1" (pointer_expression "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" ( (binary_expression "piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12" (binary_expression "piVar28[0x19] + piVar28[0x1a] * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "piVar28[0x1a] * 0x14" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_000493f0(local_a8,iVar19);" (call_expression "FUN_000493f0(local_a8,iVar19)" identifier (argument_list "(local_a8,iVar19)" ( identifier , identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }" if (parenthesized_expression "(*(int *)(param_2 + 0x34) != 0)" ( (binary_expression "*(int *)(param_2 + 0x34) != 0" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00053bb0();\n            }" { (expression_statement "FUN_00053bb0();" (call_expression "FUN_00053bb0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(param_2 + 0x34) = iVar29;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar29" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(iVar29 + 0x38) = param_2;" (assignment_expression "*(byte **)(iVar29 + 0x38) = param_2" (pointer_expression "*(byte **)(iVar29 + 0x38)" * (cast_expression "(byte **)(iVar29 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar29 + 0x38)" ( (binary_expression "iVar29 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = piVar20[0x36];" (assignment_expression "iVar19 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }" { (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar19 = piVar28[0x1a] + -1;\n              }" { (expression_statement "iVar19 = piVar28[0x1a] + -1;" (assignment_expression "iVar19 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar15 = unaff_EBP + 0x67823;" (assignment_expression "iVar15 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }" { (expression_statement "iVar15 = piVar28[0x19] + iVar19 * 0x14;" (assignment_expression "iVar15 = piVar28[0x19] + iVar19 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar19 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar19 * 0x14" identifier * number_literal))) ;) })) (expression_statement "iVar19 = *(int *)(iVar15 + 8);" (assignment_expression "iVar19 = *(int *)(iVar15 + 8)" identifier = (pointer_expression "*(int *)(iVar15 + 8)" * (cast_expression "(int *)(iVar15 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 8)" ( (binary_expression "iVar15 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "piVar20[0x36] = iVar19;" (assignment_expression "piVar20[0x36] = iVar19" (subscript_expression "piVar20[0x36]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0 = (byte *)(uint)(piVar20[9] != 0);" (assignment_expression "local_d0 = (byte *)(uint)(piVar20[9] != 0)" identifier = (cast_expression "(byte *)(uint)(piVar20[9] != 0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(piVar20[9] != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar20[9] != 0)" ( (binary_expression "piVar20[9] != 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) != number_literal) ))))) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }" if (parenthesized_expression "(*(int *)(iVar19 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar19 + 0x34) == 0" (pointer_expression "*(int *)(iVar19 + 0x34)" * (cast_expression "(int *)(iVar19 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }" { (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32447)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32447)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32447" identifier + number_literal) ))) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32456)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32456)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32456" identifier + number_literal) ))) ;) })) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" if (parenthesized_expression "(bVar7 == 0x85)" ( (binary_expression "bVar7 == 0x85" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }" { (expression_statement "*(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);" (assignment_expression "*(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8)" (pointer_expression "*(undefined4 *)(iVar19 + 8)" * (cast_expression "(undefined4 *)(iVar19 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "*(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc)" (pointer_expression "*(undefined4 *)(iVar19 + 0xc)" * (cast_expression "(undefined4 *)(iVar19 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0xc)" ( (binary_expression "iVar19 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar19 + 0x3c)" * (cast_expression "(undefined4 *)(iVar19 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x3c)" ( (binary_expression "iVar19 + 0x3c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }" if (parenthesized_expression "(local_d0 == (byte *)0x0)" ( (binary_expression "local_d0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }" { (expression_statement "local_c4 = *(int *)(iVar19 + 8);" (assignment_expression "local_c4 = *(int *)(iVar19 + 8)" identifier = (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar19 + 0xc);" (assignment_expression "uVar16 = *(undefined4 *)(iVar19 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar19 + 0xc)" * (cast_expression "(undefined4 *)(iVar19 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0xc)" ( (binary_expression "iVar19 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_2 + 8) = local_c4;" (assignment_expression "*(int *)(param_2 + 8) = local_c4" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }" if (parenthesized_expression "(local_c4 != 0)" ( (binary_expression "local_c4 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }" { (expression_statement "uVar31 = FUN_00049630(0);" (assignment_expression "uVar31 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);" (assignment_expression "uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar31 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar31 >> 0x20)" ( (binary_expression "(ulonglong)uVar31 >> 0x20" (cast_expression "(ulonglong)uVar31" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c4 = (int)uVar31;" (assignment_expression "local_c4 = (int)uVar31" identifier = (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar29 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar29 = *(int *)(param_2 + 0xc)" identifier = (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }" { (expression_statement "FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);" (call_expression "FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16)" identifier (argument_list "(iVar29 + 1,iVar29,uVar16,uVar16)" ( (binary_expression "iVar29 + 1" identifier + number_literal) , identifier , identifier , identifier ))) ;) })) })) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x31e73)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal) ))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" identifier = (call_expression "FUN_00024680()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }" if (parenthesized_expression "(((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c))" ( (binary_expression "((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)" (parenthesized_expression "((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0))" ( (binary_expression "(*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)" (parenthesized_expression "(*(int *)(iVar19 + 0x3c) != 0)" ( (binary_expression "*(int *)(iVar19 + 0x3c) != 0" (pointer_expression "*(int *)(iVar19 + 0x3c)" * (cast_expression "(int *)(iVar19 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x3c)" ( (binary_expression "iVar19 + 0x3c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar19 = FUN_00025130(), iVar19 != 0)" ( (comma_expression "iVar19 = FUN_00025130(), iVar19 != 0" (assignment_expression "iVar19 = FUN_00025130()" identifier = (call_expression "FUN_00025130()" identifier (argument_list "()" ( )))) , (binary_expression "iVar19 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(0 < (int)local_3c)" ( (binary_expression "0 < (int)local_3c" number_literal < (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }" { (expression_statement "sVar9 = *(short *)(param_2 + 2);" (assignment_expression "sVar9 = *(short *)(param_2 + 2)" identifier = (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = (int)local_3c >> 0x1f;" (assignment_expression "uVar12 = (int)local_3c >> 0x1f" identifier = (binary_expression "(int)local_3c >> 0x1f" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" if (parenthesized_expression "((int)local_3c < 8)" ( (binary_expression "(int)local_3c < 8" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }" { (if_statement "if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" if (parenthesized_expression "(local_3c == 1)" ( (binary_expression "local_3c == 1" identifier == number_literal) )) (compound_statement "{\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }" { (if_statement "if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }" if (parenthesized_expression "(0 < sVar9)" ( (binary_expression "0 < sVar9" number_literal < identifier) )) (compound_statement "{\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }" { (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a1cbb;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" else (compound_statement "{\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" { (expression_statement "uVar23 = local_3c;" (assignment_expression "uVar23 = local_3c" identifier = identifier) ;) (expression_statement "uVar27 = uVar12;" (assignment_expression "uVar27 = uVar12" identifier = identifier) ;) (expression_statement "sVar5 = 0x28;" (assignment_expression "sVar5 = 0x28" identifier = number_literal) ;) (do_statement "do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);" do (compound_statement "{\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    }" { (expression_statement "sVar24 = sVar5;" (assignment_expression "sVar24 = sVar5" identifier = identifier) ;) (expression_statement "uVar4 = uVar23 * 2;" (assignment_expression "uVar4 = uVar23 * 2" identifier = (binary_expression "uVar23 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;" if (parenthesized_expression "((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0)" ( (binary_expression "(uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0" (binary_expression "(uVar27 & 0x7fffffff) != 0" (parenthesized_expression "(uVar27 & 0x7fffffff)" ( (binary_expression "uVar27 & 0x7fffffff" identifier & number_literal) )) != number_literal) || (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = uVar4;" (assignment_expression "uVar23 = uVar4" identifier = identifier) ;) (expression_statement "sVar5 = sVar24 + -10;" (assignment_expression "sVar5 = sVar24 + -10" identifier = (binary_expression "sVar24 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) ;) (if_statement "if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" if (parenthesized_expression "((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9)" ( (binary_expression "(short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9" (cast_expression "(short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))" ( (binary_expression "sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" (binary_expression "sVar24 + -0x14" identifier + number_literal) + (pointer_expression "*(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" * (cast_expression "(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" ( (binary_expression "unaff_EBP + 0x38a1f + (uVar4 & 7) * 2" (binary_expression "unaff_EBP + 0x38a1f" identifier + number_literal) + (binary_expression "(uVar4 & 7) * 2" (parenthesized_expression "(uVar4 & 7)" ( (binary_expression "uVar4 & 7" identifier & number_literal) )) * number_literal)) ))))) ))) < identifier) )) (compound_statement "{\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" { (expression_statement "sVar9 = 0x28;" (assignment_expression "sVar9 = 0x28" identifier = number_literal) ;) (expression_statement "local_bc = local_3c;" (assignment_expression "local_bc = local_3c" identifier = identifier) ;) (do_statement "do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);" do (compound_statement "{\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      }" { (expression_statement "sVar9 = sVar9 + -10;" (assignment_expression "sVar9 = sVar9 + -10" identifier = (binary_expression "sVar9 + -10" identifier + number_literal)) ;) (expression_statement "bVar30 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar30 = CARRY4(local_bc,local_bc)" identifier = (call_expression "CARRY4(local_bc,local_bc)" identifier (argument_list "(local_bc,local_bc)" ( identifier , identifier )))) ;) (expression_statement "local_bc = local_bc * 2;" (assignment_expression "local_bc = local_bc * 2" identifier = (binary_expression "local_bc * 2" identifier * number_literal)) ;) (if_statement "if (uVar12 * 2 + (uint)bVar30 != 0) break;" if (parenthesized_expression "(uVar12 * 2 + (uint)bVar30 != 0)" ( (binary_expression "uVar12 * 2 + (uint)bVar30 != 0" (binary_expression "uVar12 * 2 + (uint)bVar30" (binary_expression "uVar12 * 2" identifier * number_literal) + (cast_expression "(uint)bVar30" ( (type_descriptor "uint" type_identifier) ) identifier)) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_bc < 8)" ( (binary_expression "local_bc < 8" identifier < number_literal) )) ;) (goto_statement "goto LAB_000a1ca8;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" else (compound_statement "{\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" { (if_statement "if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" { (for_statement "for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }" for ( ; (binary_expression "uVar12 >> uVar27 == 0" (binary_expression "uVar12 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" identifier = (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" else (compound_statement "{\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" { (for_statement "for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }" for ( ; (binary_expression "local_3c >> uVar27 == 0" (binary_expression "local_3c >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" ( (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" identifier = (binary_expression "0x3c - uVar27" number_literal - identifier)) ;) (expression_statement "bVar7 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar7 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;" (assignment_expression "uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7" identifier = (binary_expression "local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (binary_expression "local_3c >> bVar7" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar7" identifier << (binary_expression "0x20 - bVar7" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }" { (expression_statement "uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar23 = uVar12 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar27 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }" if (parenthesized_expression "((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9)" ( (binary_expression "(short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9" (cast_expression "(short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2))" ( (binary_expression "(short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" (binary_expression "(short)uVar27 * 10 + 0x1e" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal) + (pointer_expression "*(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" * (cast_expression "(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" ( (binary_expression "unaff_EBP + 0x38a1f + (uVar23 & 7) * 2" (binary_expression "unaff_EBP + 0x38a1f" identifier + number_literal) + (binary_expression "(uVar23 & 7) * 2" (parenthesized_expression "(uVar23 & 7)" ( (binary_expression "uVar23 & 7" identifier & number_literal) )) * number_literal)) ))))) ))) < identifier) )) (compound_statement "{\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }" { (if_statement "if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" if (parenthesized_expression "((int)local_3c < 0)" ( (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" { (for_statement "for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }" for ( ; (binary_expression "uVar12 >> uVar27 == 0" (binary_expression "uVar12 >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" identifier = (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" else (compound_statement "{\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" { (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" { (for_statement "for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }" for ( ; (binary_expression "local_3c >> uVar27 == 0" (binary_expression "local_3c >> uVar27" identifier >> identifier) == number_literal) ; (assignment_expression "uVar27 = uVar27 - 1" identifier = (binary_expression "uVar27 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" ( (binary_expression "uVar27 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" identifier = (binary_expression "0x3c - uVar27" number_literal - identifier)) ;) (expression_statement "sVar9 = (short)uVar27 * 10 + 0x28;" (assignment_expression "sVar9 = (short)uVar27 * 10 + 0x28" identifier = (binary_expression "(short)uVar27 * 10 + 0x28" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "bVar7 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar7 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;" (assignment_expression "local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7" identifier = (binary_expression "local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (binary_expression "local_3c >> bVar7" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar7" identifier << (binary_expression "0x20 - bVar7" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }" if (parenthesized_expression "((uVar27 & 0x20) != 0)" ( (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }" { (expression_statement "local_bc = uVar12 >> ((byte)uVar27 & 0x1f);" (assignment_expression "local_bc = uVar12 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar27 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (labeled_statement "LAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);" statement_identifier : (expression_statement "local_b0 = (int *)(unaff_EBP + 0x38a1f);" (assignment_expression "local_b0 = (int *)(unaff_EBP + 0x38a1f)" identifier = (cast_expression "(int *)(unaff_EBP + 0x38a1f)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x38a1f)" ( (binary_expression "unaff_EBP + 0x38a1f" identifier + number_literal) )))) ;)) (expression_statement "sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);" (assignment_expression "sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2)" identifier = (binary_expression "sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2)" (binary_expression "sVar9 + -10" identifier + number_literal) + (pointer_expression "*(short *)((int)local_b0 + (local_bc & 7) * 2)" * (cast_expression "(short *)((int)local_b0 + (local_bc & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + (local_bc & 7) * 2)" ( (binary_expression "(int)local_b0 + (local_bc & 7) * 2" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(local_bc & 7) * 2" (parenthesized_expression "(local_bc & 7)" ( (binary_expression "local_bc & 7" identifier & number_literal) )) * number_literal)) )))))) ;) (labeled_statement "LAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;" statement_identifier : (expression_statement "*(short *)(param_2 + 2) = sVar9;" (assignment_expression "*(short *)(param_2 + 2) = sVar9" (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;)) })) }))) })) (if_statement "if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }" if (parenthesized_expression "(local_c4 != 0)" ( (binary_expression "local_c4 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }" { (expression_statement "iVar19 = local_c8[0x1a] + -1;" (assignment_expression "iVar19 = local_c8[0x1a] + -1" identifier = (binary_expression "local_c8[0x1a] + -1" (subscript_expression "local_c8[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }" if (parenthesized_expression "(-1 < local_c4)" ( (binary_expression "-1 < local_c4" number_literal < identifier) )) (compound_statement "{\n                  iVar19 = local_c4;\n                }" { (expression_statement "iVar19 = local_c4;" (assignment_expression "iVar19 = local_c4" identifier = identifier) ;) })) (expression_statement "iVar29 = unaff_EBP + 0x67823;" (assignment_expression "iVar29 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }" if (parenthesized_expression "(*(char *)(*local_c8 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*local_c8 + 0x4d) == '\0'" (pointer_expression "*(char *)(*local_c8 + 0x4d)" * (cast_expression "(char *)(*local_c8 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_c8 + 0x4d)" ( (binary_expression "*local_c8 + 0x4d" (pointer_expression "*local_c8" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }" { (expression_statement "iVar29 = iVar19 * 0x14 + local_c8[0x19];" (assignment_expression "iVar29 = iVar19 * 0x14 + local_c8[0x19]" identifier = (binary_expression "iVar19 * 0x14 + local_c8[0x19]" (binary_expression "iVar19 * 0x14" identifier * number_literal) + (subscript_expression "local_c8[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(iVar29 + 8) = local_c8[0x1a];" (assignment_expression "*(int *)(iVar29 + 8) = local_c8[0x1a]" (pointer_expression "*(int *)(iVar29 + 8)" * (cast_expression "(int *)(iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 8)" ( (binary_expression "iVar29 + 8" identifier + number_literal) )))) = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_000a0ff8;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" else (compound_statement "{\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" { (if_statement "if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" if (parenthesized_expression "((bVar7 == 0x86) || (bVar7 == 0x84))" ( (binary_expression "(bVar7 == 0x86) || (bVar7 == 0x84)" (parenthesized_expression "(bVar7 == 0x86)" ( (binary_expression "bVar7 == 0x86" identifier == number_literal) )) || (parenthesized_expression "(bVar7 == 0x84)" ( (binary_expression "bVar7 == 0x84" identifier == number_literal) ))) )) (compound_statement "{\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" { (expression_statement "local_38 = local_70;" (assignment_expression "local_38 = local_70" identifier = identifier) ;) (if_statement "if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }" if (parenthesized_expression "((char)local_74 != '\x01')" ( (binary_expression "(char)local_74 != '\x01'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }" { (expression_statement "iVar29 = piVar20[10];" (assignment_expression "iVar29 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = iVar29 + 1;" (assignment_expression "piVar20[10] = iVar29 + 1" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_00049630(0);" (assignment_expression "uVar16 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar3 = param_2;" (assignment_expression "pbVar3 = param_2" identifier = identifier) ;) (do_statement "do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);" do (compound_statement "{\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                }" { (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" identifier = identifier) ;) (expression_statement "pbVar3 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar3 = *(byte **)(pbVar26 + 0x38)" identifier = (pointer_expression "*(byte **)(pbVar26 + 0x38)" * (cast_expression "(byte **)(pbVar26 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x38)" ( (binary_expression "pbVar26 + 0x38" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(pbVar3 != (byte *)0x0)" ( (binary_expression "pbVar3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar2 = (uint *)(pbVar26 + 4);" (assignment_expression "puVar2 = (uint *)(pbVar26 + 4)" identifier = (cast_expression "(uint *)(pbVar26 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) )))) ;) (expression_statement "*puVar2 = *puVar2 | 0x20;" (assignment_expression "*puVar2 = *puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (expression_statement "local_38 = iVar29;" (assignment_expression "local_38 = iVar29" identifier = identifier) ;) })) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" identifier = (call_expression "CONCAT31(local_3c._1_3_,1)" identifier (argument_list "(local_3c._1_3_,1)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 != (byte *)0x0) goto LAB_000a0696;" if (parenthesized_expression "(local_d0 != (byte *)0x0)" ( (binary_expression "local_d0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a0696;" goto statement_identifier ;)) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" if (parenthesized_expression "(bVar7 == 0x86)" ( (binary_expression "bVar7 == 0x86" identifier == number_literal) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,2);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,2)" identifier = (call_expression "CONCAT31(local_3c._1_3_,2)" identifier (argument_list "(local_3c._1_3_,2)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "iVar29 = unaff_EBP + 0x31e87;" (assignment_expression "iVar29 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) }) (else_clause "else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" else (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" identifier = (call_expression "CONCAT31(local_3c._1_3_,1)" identifier (argument_list "(local_3c._1_3_,1)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "iVar29 = unaff_EBP + 0x31e73;" (assignment_expression "iVar29 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }" if (parenthesized_expression "(bVar7 != 0x85)" ( (binary_expression "bVar7 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }" { (expression_statement "iVar29 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar29 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }" if (parenthesized_expression "(bVar7 != 0x87)" ( (binary_expression "bVar7 != 0x87" identifier != number_literal) )) (compound_statement "{\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }" { (expression_statement "iVar29 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar29 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) })) })) }))) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32469,iVar29)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32469" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }" if (parenthesized_expression "(*param_2 == 0x84)" ( (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }" { (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" identifier = (call_expression "FUN_00024680()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" * (cast_expression "(undefined2 *)(param_2 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = identifier) ;) })) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                FUN_00053f30();\n              }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }" if (parenthesized_expression "(((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0'))" ( (binary_expression "((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')" (parenthesized_expression "((char)local_74 != '\x01')" ( (binary_expression "(char)local_74 != '\x01'" (cast_expression "(char)local_74" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar15 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar15 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x4d)" * (cast_expression "(char *)(iVar15 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x4d)" ( (binary_expression "iVar15 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }" { (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar21 = piVar20[0xe] + -2;" (assignment_expression "iVar21 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar21;" (assignment_expression "piVar20[0xe] = iVar21" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;) (expression_statement "iVar29 = local_c8[0x1a];" (assignment_expression "iVar29 = local_c8[0x1a]" identifier = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_000964a0(0,0,&local_74,iVar21,iVar19);" (call_expression "FUN_000964a0(0,0,&local_74,iVar21,iVar19)" identifier (argument_list "(0,0,&local_74,iVar21,iVar19)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(iVar29);" (call_expression "FUN_00049630(iVar29)" identifier (argument_list "(iVar29)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000a16d1:\n                FUN_00049630(0);" statement_identifier : (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;)) })) (labeled_statement "LAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" statement_identifier : (if_statement "if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" if (parenthesized_expression "(*(int *)(param_2 + 0x38) == 0)" ( (binary_expression "*(int *)(param_2 + 0x38) == 0" (pointer_expression "*(int *)(param_2 + 0x38)" * (cast_expression "(int *)(param_2 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" { (expression_statement "iVar19 = piVar20[0x36];" (assignment_expression "iVar19 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }" { (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" identifier = (cast_expression "(int *)piVar20[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar20[2]" identifier [ number_literal ]))) ;) (if_statement "if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n                    iVar19 = piVar28[0x1a] + -1;\n                  }" { (expression_statement "iVar19 = piVar28[0x1a] + -1;" (assignment_expression "iVar19 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar29 = unaff_EBP + 0x67823;" (assignment_expression "iVar29 = unaff_EBP + 0x67823" identifier = (binary_expression "unaff_EBP + 0x67823" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }" if (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" * (cast_expression "(char *)(*piVar28 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + 0x4d)" ( (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }" { (expression_statement "iVar29 = iVar19 * 0x14 + piVar28[0x19];" (assignment_expression "iVar29 = iVar19 * 0x14 + piVar28[0x19]" identifier = (binary_expression "iVar19 * 0x14 + piVar28[0x19]" (binary_expression "iVar19 * 0x14" identifier * number_literal) + (subscript_expression "piVar28[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar19 = *(int *)(iVar29 + 8);" (assignment_expression "iVar19 = *(int *)(iVar29 + 8)" identifier = (pointer_expression "*(int *)(iVar29 + 8)" * (cast_expression "(int *)(iVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar29 + 8)" ( (binary_expression "iVar29 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "piVar20[0x36] = iVar19;" (assignment_expression "piVar20[0x36] = iVar19" (subscript_expression "piVar20[0x36]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (piVar20[9] == 0) goto LAB_000a0282;" if (parenthesized_expression "(piVar20[9] == 0)" ( (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000a0282;" goto statement_identifier ;)) (goto_statement "goto LAB_000a028c;" goto statement_identifier ;) })) (expression_statement "iVar29 = piVar20[10];" (assignment_expression "iVar29 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = iVar29 + 2;" (assignment_expression "piVar20[10] = iVar29 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "iVar29 + 2" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_00049630(0);" (assignment_expression "uVar16 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar3 = param_2;" (assignment_expression "pbVar3 = param_2" identifier = identifier) ;) (do_statement "do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);" do (compound_statement "{\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            }" { (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" identifier = identifier) ;) (expression_statement "pbVar3 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar3 = *(byte **)(pbVar26 + 0x38)" identifier = (pointer_expression "*(byte **)(pbVar26 + 0x38)" * (cast_expression "(byte **)(pbVar26 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x38)" ( (binary_expression "pbVar26 + 0x38" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(pbVar3 != (byte *)0x0)" ( (binary_expression "pbVar3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar2 = (uint *)(pbVar26 + 4);" (assignment_expression "puVar2 = (uint *)(pbVar26 + 4)" identifier = (cast_expression "(uint *)(pbVar26 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) )))) ;) (expression_statement "*puVar2 = *puVar2 | 0x20;" (assignment_expression "*puVar2 = *puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | 0x20" (pointer_expression "*puVar2" * identifier) | number_literal)) ;) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" identifier = (call_expression "CONCAT31(local_3c._1_3_,1)" identifier (argument_list "(local_3c._1_3_,1)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_38 = iVar29;" (assignment_expression "local_38 = iVar29" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" if (parenthesized_expression "(local_d0 == (byte *)0x0)" ( (binary_expression "local_d0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" { (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x18) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0x18) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0x18)" * (cast_expression "(undefined4 *)(param_2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar21 = unaff_EBP + 0x31e87;" (assignment_expression "iVar21 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) (if_statement "if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }" if (parenthesized_expression "((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87))" ( (binary_expression "(bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (parenthesized_expression "(bVar7 != 0x86)" ( (binary_expression "bVar7 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" ( (comma_expression "iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87" (assignment_expression "iVar21 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) , (binary_expression "bVar7 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }" { (expression_statement "iVar21 = unaff_EBP + 0x31e73;" (assignment_expression "iVar21 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (if_statement "if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }" if (parenthesized_expression "(bVar7 != 0x85)" ( (binary_expression "bVar7 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }" { (expression_statement "iVar21 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar21 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) })) })) (expression_statement "local_38 = iVar29 + 1;" (assignment_expression "local_38 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32469,iVar21)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32469" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" identifier = (cast_expression "(byte *)FUN_0008d250()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" identifier = (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" * (cast_expression "(int *)(param_2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar19 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar19 + 2)" * (cast_expression "(short *)(iVar19 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 2)" ( (binary_expression "iVar19 + 2" identifier + number_literal) )))) < (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) ))))) )) (compound_statement "{\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar19 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar19 + 2)" (pointer_expression "*(short *)(param_2 + 2)" * (cast_expression "(short *)(param_2 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) = (pointer_expression "*(short *)(iVar19 + 2)" * (cast_expression "(short *)(iVar19 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 2)" ( (binary_expression "iVar19 + 2" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }" if (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                FUN_00053f30();\n              }" { (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }" if (parenthesized_expression "(local_d0 == (byte *)0x0)" ( (binary_expression "local_d0 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }" { (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar29 = piVar20[0xe] + -2;" (assignment_expression "iVar29 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar29;" (assignment_expression "piVar20[0xe] = iVar29" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;) (if_statement "if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" if (parenthesized_expression "(*(char *)((int)piVar20 + 0x13) == '\0')" ( (binary_expression "*(char *)((int)piVar20 + 0x13) == '\0'" (pointer_expression "*(char *)((int)piVar20 + 0x13)" * (cast_expression "(char *)((int)piVar20 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 0x13)" ( (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }" { (expression_statement "iVar21 = piVar20[0xb] + 1;" (assignment_expression "iVar21 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = iVar21;" (assignment_expression "piVar20[0xb] = iVar21" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" else (compound_statement "{\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" { (expression_statement "bVar7 = *(char *)((int)piVar20 + 0x13) - 1;" (assignment_expression "bVar7 = *(char *)((int)piVar20 + 0x13) - 1" identifier = (binary_expression "*(char *)((int)piVar20 + 0x13) - 1" (pointer_expression "*(char *)((int)piVar20 + 0x13)" * (cast_expression "(char *)((int)piVar20 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 0x13)" ( (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(byte *)((int)piVar20 + 0x13) = bVar7;" (assignment_expression "*(byte *)((int)piVar20 + 0x13) = bVar7" (pointer_expression "*(byte *)((int)piVar20 + 0x13)" * (cast_expression "(byte *)((int)piVar20 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 0x13)" ( (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar21 = piVar20[bVar7 + 0x26];" (assignment_expression "iVar21 = piVar20[bVar7 + 0x26]" identifier = (subscript_expression "piVar20[bVar7 + 0x26]" identifier [ (binary_expression "bVar7 + 0x26" identifier + number_literal) ])) ;) }))) (expression_statement "uVar16 = FUN_00049630(iVar21);" (assignment_expression "uVar16 = FUN_00049630(iVar21)" identifier = (call_expression "FUN_00049630(iVar21)" identifier (argument_list "(iVar21)" ( identifier )))) ;) (expression_statement "FUN_00068470(iVar29,iVar21,0);" (call_expression "FUN_00068470(iVar29,iVar21,0)" identifier (argument_list "(iVar29,iVar21,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (iVar21 != 0) {\n                  FUN_000254e0();\n                }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000254e0();\n                }" { (expression_statement "FUN_000254e0();" (call_expression "FUN_000254e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_000964a0(0,0,&local_74,iVar29,iVar19);" (call_expression "FUN_000964a0(0,0,&local_74,iVar29,iVar19)" identifier (argument_list "(0,0,&local_74,iVar29,iVar19)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(uVar16);" (call_expression "FUN_00049630(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (goto_statement "goto LAB_000a16d1;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a0ff8;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000a0696:\n          param_3[3] = local_68;" statement_identifier : (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "piVar28 = *(int **)(param_2 + 0x20);" (assignment_expression "piVar28 = *(int **)(param_2 + 0x20)" identifier = (pointer_expression "*(int **)(param_2 + 0x20)" * (cast_expression "(int **)(param_2 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_c0 = **(undefined4 **)(param_2 + 0x1c);" (assignment_expression "local_c0 = **(undefined4 **)(param_2 + 0x1c)" identifier = (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" * (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" * (cast_expression "(undefined4 **)(param_2 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "local_d0 = *(byte **)(param_2 + 0x34);" (assignment_expression "local_d0 = *(byte **)(param_2 + 0x34)" identifier = (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" if (parenthesized_expression "(*(int *)(param_2 + 0x44) == 0)" ( (binary_expression "*(int *)(param_2 + 0x44) == 0" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }" { (labeled_statement "LAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);" statement_identifier : (expression_statement "iVar19 = FUN_0003d5a0(0,0);" (assignment_expression "iVar19 = FUN_0003d5a0(0,0)" identifier = (call_expression "FUN_0003d5a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;)) (if_statement "if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" { (expression_statement "iVar13 = piVar20[0xe] + -1;" (assignment_expression "iVar13 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar13;" (assignment_expression "piVar20[0xe] = iVar13" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[2] = 0x40;" (assignment_expression "param_2[2] = 0x40" (subscript_expression "param_2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[3] = 1;" (assignment_expression "param_2[3] = 1" (subscript_expression "param_2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *piVar28;" (assignment_expression "iVar19 = *piVar28" identifier = (pointer_expression "*piVar28" * identifier)) ;) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar29 = *(int *)(param_2 + 8);" (assignment_expression "iVar29 = *(int *)(param_2 + 8)" identifier = (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar21 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar21 = *(int *)(param_2 + 0xc)" identifier = (pointer_expression "*(int *)(param_2 + 0xc)" * (cast_expression "(int *)(param_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar14 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar14 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = extraout_EDX;" (assignment_expression "iVar11 = extraout_EDX" identifier = identifier) ;) (if_statement "if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (expression_statement "bVar7 = *(byte *)((int)piVar28 + 0x2d);" (assignment_expression "bVar7 = *(byte *)((int)piVar28 + 0x2d)" identifier = (pointer_expression "*(byte *)((int)piVar28 + 0x2d)" * (cast_expression "(byte *)((int)piVar28 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar28 + 0x2d)" ( (binary_expression "(int)piVar28 + 0x2d" (cast_expression "(int)piVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }" while (parenthesized_expression "(((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19)))" ( (parenthesized_expression "((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))" ( (binary_expression "(bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19)" (binary_expression "(bVar7 & 0x20) == 0" (parenthesized_expression "(bVar7 & 0x20)" ( (binary_expression "bVar7 & 0x20" identifier & number_literal) )) == number_literal) && (parenthesized_expression "(iVar18 = iVar18 + 1, iVar18 != iVar19)" ( (comma_expression "iVar18 = iVar18 + 1, iVar18 != iVar19" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) , (binary_expression "iVar18 != iVar19" identifier != identifier)) ))) )) )) (compound_statement "{\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }" { (expression_statement "iVar11 = iVar18 * 0x44;" (assignment_expression "iVar11 = iVar18 * 0x44" identifier = (binary_expression "iVar18 * 0x44" identifier * number_literal)) ;) (expression_statement "bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);" (assignment_expression "bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d)" identifier = (pointer_expression "*(byte *)((int)piVar28 + iVar11 + 0x2d)" * (cast_expression "(byte *)((int)piVar28 + iVar11 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar28 + iVar11 + 0x2d)" ( (binary_expression "(int)piVar28 + iVar11 + 0x2d" (binary_expression "(int)piVar28 + iVar11" (cast_expression "(int)piVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) ))))) ;) })) })) (expression_statement "local_38 = piVar20[10];" (assignment_expression "local_38 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "local_bc = local_38 + 1;" (assignment_expression "local_bc = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "piVar20[10] = local_bc;" (assignment_expression "piVar20[10] = local_bc" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar19 = piVar20[0xb] + 1;" (assignment_expression "iVar19 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" if (parenthesized_expression "(*param_2 == 0x84)" ( (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }" { (if_statement "if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,8);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,8)" identifier = (call_expression "CONCAT31(local_3c._1_3_,8)" identifier (argument_list "(local_3c._1_3_,8)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "piVar20[10] = local_38 + 2;" (assignment_expression "piVar20[10] = local_38 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "local_38 + 2" identifier + number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0,iVar11,iVar11);" (call_expression "FUN_000493f0(iVar19,local_c0,iVar11,iVar11)" identifier (argument_list "(iVar19,local_c0,iVar11,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000a049c;" goto statement_identifier ;) })) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,6);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,6)" identifier = (call_expression "CONCAT31(local_3c._1_3_,6)" identifier (argument_list "(local_3c._1_3_,6)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "piVar20[10] = local_38 + 2;" (assignment_expression "piVar20[10] = local_38 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "local_38 + 2" identifier + number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0,piVar20,piVar20);" (call_expression "FUN_000493f0(iVar19,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar19,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" identifier (argument_list "(local_c0)" ( identifier ))) ;) (labeled_statement "LAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" statement_identifier : (if_statement "if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" if (parenthesized_expression "(local_bc != 0)" ( (binary_expression "local_bc != 0" identifier != number_literal) )) (compound_statement "{\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" { (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;" (assignment_expression "*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "*(uint *)(param_2 + 4) | 0x20" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x38] = 0;" (assignment_expression "local_d0[0x38] = 0" (subscript_expression "local_d0[0x38]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x39] = 0;" (assignment_expression "local_d0[0x39] = 0" (subscript_expression "local_d0[0x39]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3a] = 0;" (assignment_expression "local_d0[0x3a] = 0" (subscript_expression "local_d0[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3b] = 0;" (assignment_expression "local_d0[0x3b] = 0" (subscript_expression "local_d0[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x3241c)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x3241c" identifier + number_literal) ))) ;) (expression_statement "iVar11 = FUN_0008d250();" (assignment_expression "iVar11 = FUN_0008d250()" identifier = (call_expression "FUN_0008d250()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(byte **)(local_d0 + 0x38) = param_2;" (assignment_expression "*(byte **)(local_d0 + 0x38) = param_2" (pointer_expression "*(byte **)(local_d0 + 0x38)" * (cast_expression "(byte **)(local_d0 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x38)" ( (binary_expression "local_d0 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }" { (expression_statement "local_c0 = FUN_00049630(iVar13);" (assignment_expression "local_c0 = FUN_00049630(iVar13)" identifier = (call_expression "FUN_00049630(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (piVar14 == (int *)0x0) goto LAB_000a1b0c;" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1b0c;" goto statement_identifier ;)) (expression_statement "FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);" (call_expression "FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22)" identifier (argument_list "(*piVar14 + 1,iVar19,uVar22,uVar22)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_000a191e:\n                uVar22 = FUN_00049630(0);" statement_identifier : (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" identifier = (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal )))) ;)) (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar19;" (assignment_expression "piVar20[0xe] = iVar19" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }" if (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) (compound_statement "{\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }" { (expression_statement "FUN_000493f0(iVar19,1,uVar22,uVar22);" (call_expression "FUN_000493f0(iVar19,1,uVar22,uVar22)" identifier (argument_list "(iVar19,1,uVar22,uVar22)" ( identifier , number_literal , identifier , identifier ))) ;) })) (expression_statement "FUN_000964a0(0,0,&local_74,iVar19,iVar13);" (call_expression "FUN_000964a0(0,0,&local_74,iVar19,iVar13)" identifier (argument_list "(0,0,&local_74,iVar19,iVar13)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (if_statement "if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }" if (parenthesized_expression "(iVar29 != 0)" ( (binary_expression "iVar29 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00049630(iVar13);\n                }" { (expression_statement "FUN_00049630(iVar13);" (call_expression "FUN_00049630(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) })) (expression_statement "uVar22 = FUN_000330b0();" (assignment_expression "uVar22 = FUN_000330b0()" identifier = (call_expression "FUN_000330b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" if (parenthesized_expression "((param_2[4] & 8) == 0)" ( (binary_expression "(param_2[4] & 8) == 0" (parenthesized_expression "(param_2[4] & 8)" ( (binary_expression "param_2[4] & 8" (subscript_expression "param_2[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }" { (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x32422,uVar22)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32422" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(byte **)(param_2 + 0x34) = local_d0;" (assignment_expression "*(byte **)(param_2 + 0x34) = local_d0" (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" else (compound_statement "{\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" { (expression_statement "FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);" (call_expression "FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22)" identifier (argument_list "(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22)" ( identifier , (binary_expression "&UNK_00034dc7 + unaff_EBP" (pointer_expression "&UNK_00034dc7" & identifier) + identifier) , identifier , identifier ))) ;) }))) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" identifier (argument_list "(local_c0)" ( identifier ))) ;) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" else (compound_statement "{\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" { (if_statement "if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }" { (expression_statement "local_3c = CONCAT31(local_3c._1_3_,7);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,7)" identifier = (call_expression "CONCAT31(local_3c._1_3_,7)" identifier (argument_list "(local_3c._1_3_,7)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0);" (call_expression "FUN_000493f0(iVar19,local_c0)" identifier (argument_list "(iVar19,local_c0)" ( identifier , identifier ))) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a049c:\n                FUN_00050020();" statement_identifier : (expression_statement "FUN_00050020();" (call_expression "FUN_00050020()" identifier (argument_list "()" ( ))) ;)) (expression_statement "FUN_00049630(*piVar14 + 2);" (call_expression "FUN_00049630(*piVar14 + 2)" identifier (argument_list "(*piVar14 + 2)" ( (binary_expression "*piVar14 + 2" (pointer_expression "*piVar14" * identifier) + number_literal) ))) ;) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" identifier = identifier) ;) (goto_statement "goto LAB_000a04f4;" goto statement_identifier ;) })) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,5);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,5)" identifier = (call_expression "CONCAT31(local_3c._1_3_,5)" identifier (argument_list "(local_3c._1_3_,5)" ( (field_expression "local_3c._1_3_" identifier . field_identifier) , number_literal )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000493f0(iVar19,local_c0,piVar20,piVar20);" (call_expression "FUN_000493f0(iVar19,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar19,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" identifier (argument_list "(local_c0)" ( identifier ))) ;) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x38] = 0;" (assignment_expression "local_d0[0x38] = 0" (subscript_expression "local_d0[0x38]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x39] = 0;" (assignment_expression "local_d0[0x39] = 0" (subscript_expression "local_d0[0x39]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3a] = 0;" (assignment_expression "local_d0[0x3a] = 0" (subscript_expression "local_d0[0x3a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x3b] = 0;" (assignment_expression "local_d0[0x3b] = 0" (subscript_expression "local_d0[0x3b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x3241c)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x3241c" identifier + number_literal) ))) ;) (expression_statement "iVar11 = FUN_0008d250();" (assignment_expression "iVar11 = FUN_0008d250()" identifier = (call_expression "FUN_0008d250()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(byte **)(local_d0 + 0x38) = param_2;" (assignment_expression "*(byte **)(local_d0 + 0x38) = param_2" (pointer_expression "*(byte **)(local_d0 + 0x38)" * (cast_expression "(byte **)(local_d0 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x38)" ( (binary_expression "local_d0 + 0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }" { (expression_statement "local_c0 = FUN_00049630(iVar13);" (assignment_expression "local_c0 = FUN_00049630(iVar13)" identifier = (call_expression "FUN_00049630(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (labeled_statement "LAB_000a1b0c:\n                FUN_00049630(iVar19);" statement_identifier : (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" identifier (argument_list "(iVar19)" ( identifier ))) ;)) (goto_statement "goto LAB_000a191e;" goto statement_identifier ;) })) }))) (if_statement "if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }" if (parenthesized_expression "(*(int *)(param_2 + 0x30) != 0)" ( (binary_expression "*(int *)(param_2 + 0x30) != 0" (pointer_expression "*(int *)(param_2 + 0x30)" * (cast_expression "(int *)(param_2 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              FUN_00054000();\n            }" { (expression_statement "FUN_00054000();" (call_expression "FUN_00054000()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int **)(param_2 + 0x30) = piVar14;" (assignment_expression "*(int **)(param_2 + 0x30) = piVar14" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" * (cast_expression "(undefined4 *)(param_2 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) )))) = identifier) ;) })) }) (else_clause "else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" else (compound_statement "{\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" { (labeled_statement "LAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);" statement_identifier : (expression_statement "FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);" (call_expression "FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP)" identifier (argument_list "(piVar20,&UNK_00034d93 + unaff_EBP)" ( identifier , (binary_expression "&UNK_00034d93 + unaff_EBP" (pointer_expression "&UNK_00034d93" & identifier) + identifier) ))) ;)) }))) (if_statement "if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }" if (parenthesized_expression "(piVar20[9] == 0)" ( (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }" { (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = (byte *)0x0;" (assignment_expression "local_d0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" statement_identifier : (if_statement "if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" if (parenthesized_expression "((param_2[4] & 0x20) != 0)" ( (binary_expression "(param_2[4] & 0x20) != 0" (parenthesized_expression "(param_2[4] & 0x20)" ( (binary_expression "param_2[4] & 0x20" (subscript_expression "param_2[4]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" { (expression_statement "iVar19 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar19 = **(int **)(param_2 + 0x1c)" identifier = (pointer_expression "**(int **)(param_2 + 0x1c)" * (pointer_expression "*(int **)(param_2 + 0x1c)" * (cast_expression "(int **)(param_2 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "piVar20 = (int *)FUN_0002fcc0();" (assignment_expression "piVar20 = (int *)FUN_0002fcc0()" identifier = (cast_expression "(int *)FUN_0002fcc0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002fcc0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" if (parenthesized_expression "(piVar20 == (int *)0x0)" ( (binary_expression "piVar20 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_d0 = (byte *)0x7;\n            }" { (expression_statement "local_d0 = (byte *)0x7;" (assignment_expression "local_d0 = (byte *)0x7" identifier = (cast_expression "(byte *)0x7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" else (compound_statement "{\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" { (if_statement "if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }" if (parenthesized_expression "(0 < iVar19)" ( (binary_expression "0 < iVar19" number_literal < identifier) )) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);" do (compound_statement "{\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                }" { (expression_statement "iVar21 = FUN_0004ff90(iVar29);" (assignment_expression "iVar21 = FUN_0004ff90(iVar29)" identifier = (call_expression "FUN_0004ff90(iVar29)" identifier (argument_list "(iVar29)" ( identifier )))) ;) (expression_statement "piVar20[iVar29 + 5] = iVar21;" (assignment_expression "piVar20[iVar29 + 5] = iVar21" (subscript_expression "piVar20[iVar29 + 5]" identifier [ (binary_expression "iVar29 + 5" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }" { (expression_statement "piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);" (assignment_expression "piVar20[iVar29 + 5] = *(int *)(iVar15 + 8)" (subscript_expression "piVar20[iVar29 + 5]" identifier [ (binary_expression "iVar29 + 5" identifier + number_literal) ]) = (pointer_expression "*(int *)(iVar15 + 8)" * (cast_expression "(int *)(iVar15 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 8)" ( (binary_expression "iVar15 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != iVar29)" ( (binary_expression "iVar19 != iVar29" identifier != identifier) )) ;) })) (do_statement "do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);" do (compound_statement "{\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (while_statement "while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" while (parenthesized_expression "(-1 < *(int *)(param_2 + iVar15 * 4 + 0x14))" ( (binary_expression "-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)" number_literal < (pointer_expression "*(int *)(param_2 + iVar15 * 4 + 0x14)" * (cast_expression "(int *)(param_2 + iVar15 * 4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15 * 4 + 0x14)" ( (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) + number_literal) ))))) )) (compound_statement "{\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" { (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" if (parenthesized_expression "(*(char *)(*local_c8 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*local_c8 + 0x4d) == '\0'" (pointer_expression "*(char *)(*local_c8 + 0x4d)" * (cast_expression "(char *)(*local_c8 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_c8 + 0x4d)" ( (binary_expression "*local_c8 + 0x4d" (pointer_expression "*local_c8" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }" { (expression_statement "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;" (assignment_expression "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19" (pointer_expression "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" * (cast_expression "(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" ( (binary_expression "local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8" (binary_expression "local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (subscript_expression "local_c8[0x19]" identifier [ number_literal ]) + (binary_expression "*(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (pointer_expression "*(int *)(param_2 + iVar15 * 4 + 0x14)" * (cast_expression "(int *)(param_2 + iVar15 * 4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15 * 4 + 0x14)" ( (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) + number_literal) )))) * number_literal)) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" else (compound_statement "{\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" { (expression_statement "*(int *)(unaff_EBP + 0x6782b) = iVar19;" (assignment_expression "*(int *)(unaff_EBP + 0x6782b) = iVar19" (pointer_expression "*(int *)(unaff_EBP + 0x6782b)" * (cast_expression "(int *)(unaff_EBP + 0x6782b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x6782b)" ( (binary_expression "unaff_EBP + 0x6782b" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*piVar20 = *piVar20 + 1;" (assignment_expression "*piVar20 = *piVar20 + 1" (pointer_expression "*piVar20" * identifier) = (binary_expression "*piVar20 + 1" (pointer_expression "*piVar20" * identifier) + number_literal)) ;) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "pbVar3 = param_2 + iVar15 * 4 + 0x14;" (assignment_expression "pbVar3 = param_2 + iVar15 * 4 + 0x14" identifier = (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) + number_literal)) ;) (expression_statement "pbVar3[0] = 0xff;" (assignment_expression "pbVar3[0] = 0xff" (subscript_expression "pbVar3[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[1] = 0xff;" (assignment_expression "pbVar3[1] = 0xff" (subscript_expression "pbVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[2] = 0xff;" (assignment_expression "pbVar3[2] = 0xff" (subscript_expression "pbVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar3[3] = 0xff;" (assignment_expression "pbVar3[3] = 0xff" (subscript_expression "pbVar3[3]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar15 == 1) break;" if (parenthesized_expression "(iVar15 == 1)" ( (binary_expression "iVar15 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" identifier = number_literal) ;) })) (expression_statement "param_2 = *(byte **)(param_2 + 0x34);" (assignment_expression "param_2 = *(byte **)(param_2 + 0x34)" identifier = (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar19 = *piVar20;" (assignment_expression "iVar19 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "*piVar20 = iVar19 + -1;" (assignment_expression "*piVar20 = iVar19 + -1" (pointer_expression "*piVar20" * identifier) = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }" if (parenthesized_expression "(iVar19 + -1 == 0)" ( (binary_expression "iVar19 + -1 == 0" (binary_expression "iVar19 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                FUN_00023410();\n              }" { (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" identifier (argument_list "()" ( ))) ;) })) }))) }))) (labeled_statement "LAB_000a028c:\n          param_3[3] = local_68;" statement_identifier : (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_c0 != 0) {\n            FUN_00053bb0();\n          }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00053bb0();\n          }" { (expression_statement "FUN_00053bb0();" (call_expression "FUN_00053bb0()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" else (compound_statement "{\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" { (expression_statement "iVar29 = *(int *)(param_2 + 0x3c);" (assignment_expression "iVar29 = *(int *)(param_2 + 0x3c)" identifier = (pointer_expression "*(int *)(param_2 + 0x3c)" * (cast_expression "(int *)(param_2 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c)" ( (binary_expression "param_2 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" if (parenthesized_expression "(*(int *)(param_2 + 0x44) != 0)" ( (binary_expression "*(int *)(param_2 + 0x44) != 0" (pointer_expression "*(int *)(param_2 + 0x44)" * (cast_expression "(int *)(param_2 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" { (if_statement "if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;" if (parenthesized_expression "((uVar12 & 0x2000) != 0)" ( (binary_expression "(uVar12 & 0x2000) != 0" (parenthesized_expression "(uVar12 & 0x2000)" ( (binary_expression "uVar12 & 0x2000" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000a0251;" goto statement_identifier ;)) (goto_statement "goto LAB_0009ff43;" goto statement_identifier ;) })) (expression_statement "pbVar3 = *(byte **)(param_2 + 0x34);" (assignment_expression "pbVar3 = *(byte **)(param_2 + 0x34)" identifier = (pointer_expression "*(byte **)(param_2 + 0x34)" * (cast_expression "(byte **)(param_2 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_d0 = param_2;" (assignment_expression "local_d0 = param_2" identifier = identifier) ;) (if_statement "if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" if (parenthesized_expression "(pbVar3 == (byte *)0x0)" ( (binary_expression "pbVar3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }" { (labeled_statement "LAB_000a122a:\n          local_cc = (int *)0x1;" statement_identifier : (expression_statement "local_cc = (int *)0x1;" (assignment_expression "local_cc = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar19 = unaff_EBP + 0x327e3;" (assignment_expression "iVar19 = unaff_EBP + 0x327e3" identifier = (binary_expression "unaff_EBP + 0x327e3" identifier + number_literal)) ;) }) (else_clause "else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" else (compound_statement "{\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" { (expression_statement "local_cc = (int *)0x1;" (assignment_expression "local_cc = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" identifier = identifier) ;) (do_statement "do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);" do (compound_statement "{\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          }" { (expression_statement "local_d0 = pbVar26;" (assignment_expression "local_d0 = pbVar26" identifier = identifier) ;) (expression_statement "local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));" (assignment_expression "local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0))" identifier = (cast_expression "(int *)((int)local_cc + (uint)(iVar29 == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_cc + (uint)(iVar29 == 0))" ( (binary_expression "(int)local_cc + (uint)(iVar29 == 0)" (cast_expression "(int)local_cc" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(iVar29 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )))) )))) ;) (if_statement "if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }" if (parenthesized_expression "(*(int *)(local_d0 + 0x44) != 0)" ( (binary_expression "*(int *)(local_d0 + 0x44) != 0" (pointer_expression "*(int *)(local_d0 + 0x44)" * (cast_expression "(int *)(local_d0 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0x44)" ( (binary_expression "local_d0 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }" { (if_statement "if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;" if (parenthesized_expression "((uVar12 & 0x2000) == 0)" ( (binary_expression "(uVar12 & 0x2000) == 0" (parenthesized_expression "(uVar12 & 0x2000)" ( (binary_expression "uVar12 & 0x2000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0009ff43;" goto statement_identifier ;)) (expression_statement "piVar28 = *(int **)(param_2 + 0x20);" (assignment_expression "piVar28 = *(int **)(param_2 + 0x20)" identifier = (pointer_expression "*(int **)(param_2 + 0x20)" * (cast_expression "(int **)(param_2 + 0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "local_c0 = **(undefined4 **)(param_2 + 0x1c);" (assignment_expression "local_c0 = **(undefined4 **)(param_2 + 0x1c)" identifier = (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" * (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" * (cast_expression "(undefined4 **)(param_2 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) )))))) ;) (expression_statement "local_d0 = pbVar3;" (assignment_expression "local_d0 = pbVar3" identifier = identifier) ;) (goto_statement "goto LAB_000a035e;" goto statement_identifier ;) })) (expression_statement "pbVar26 = *(byte **)(local_d0 + 0x34);" (assignment_expression "pbVar26 = *(byte **)(local_d0 + 0x34)" identifier = (pointer_expression "*(byte **)(local_d0 + 0x34)" * (cast_expression "(byte **)(local_d0 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x34)" ( (binary_expression "local_d0 + 0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(byte **)(local_d0 + 0x34) != (byte *)0x0)" ( (binary_expression "*(byte **)(local_d0 + 0x34) != (byte *)0x0" (pointer_expression "*(byte **)(local_d0 + 0x34)" * (cast_expression "(byte **)(local_d0 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x34)" ( (binary_expression "local_d0 + 0x34" identifier + number_literal) )))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar19 = unaff_EBP + 0x329e1;" (assignment_expression "iVar19 = unaff_EBP + 0x329e1" identifier = (binary_expression "unaff_EBP + 0x329e1" identifier + number_literal)) ;) (if_statement "if (local_cc == (int *)0x1) goto LAB_000a122a;" if (parenthesized_expression "(local_cc == (int *)0x1)" ( (binary_expression "local_cc == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a122a;" goto statement_identifier ;)) }))) (expression_statement "FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);" (call_expression "FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19)" identifier (argument_list "(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x32405" identifier + number_literal) , identifier , identifier ))) ;) (if_statement "if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (compound_statement "{\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }" { (do_statement "do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);" do (compound_statement "{\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          }" { (expression_statement "FUN_000964a0(0,0,&local_74,1,1);" (call_expression "FUN_000964a0(0,0,&local_74,1,1)" identifier (argument_list "(0,0,&local_74,1,1)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , number_literal , number_literal ))) ;) (expression_statement "*(short *)(local_d0 + 2) = (short)local_cc;" (assignment_expression "*(short *)(local_d0 + 2) = (short)local_cc" (pointer_expression "*(short *)(local_d0 + 2)" * (cast_expression "(short *)(local_d0 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 2)" ( (binary_expression "local_d0 + 2" identifier + number_literal) )))) = (cast_expression "(short)local_cc" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "local_d0 = *(byte **)(local_d0 + 0x38);" (assignment_expression "local_d0 = *(byte **)(local_d0 + 0x38)" identifier = (pointer_expression "*(byte **)(local_d0 + 0x38)" * (cast_expression "(byte **)(local_d0 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_d0 + 0x38)" ( (binary_expression "local_d0 + 0x38" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(local_d0 != (byte *)0x0)" ( (binary_expression "local_d0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" else (compound_statement "{\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" { (expression_statement "FUN_000964a0(0,0,&local_74,1,1);" (call_expression "FUN_000964a0(0,0,&local_74,1,1)" identifier (argument_list "(0,0,&local_74,1,1)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , number_literal , number_literal ))) ;) }))) }))) (expression_statement "local_d0 = (byte *)0x0;" (assignment_expression "local_d0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_0009fe71;" goto statement_identifier ;) })) (expression_statement "cVar6 = *pcVar25;" (assignment_expression "cVar6 = *pcVar25" identifier = (pointer_expression "*pcVar25" * identifier)) ;) (if_statement "if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" if (parenthesized_expression "(cVar6 == -0x7a)" ( (binary_expression "cVar6 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e87;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e87;" (assignment_expression "iVar19 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) }) (else_clause "else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" else (if_statement "if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" if (parenthesized_expression "(cVar6 == -0x79)" ( (binary_expression "cVar6 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e7d;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar19 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" else (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar19 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) (if_statement "if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }" if (parenthesized_expression "(cVar6 == -0x7b)" ( (binary_expression "cVar6 == -0x7b" identifier == number_literal) )) (compound_statement "{\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }" { (expression_statement "iVar19 = unaff_EBP + 0x31e73;" (assignment_expression "iVar19 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) (expression_statement "puVar10 = (undefined *)(unaff_EBP + 0x323ff);" (assignment_expression "puVar10 = (undefined *)(unaff_EBP + 0x323ff)" identifier = (cast_expression "(undefined *)(unaff_EBP + 0x323ff)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x323ff)" ( (binary_expression "unaff_EBP + 0x323ff" identifier + number_literal) )))) ;) (goto_statement "goto LAB_0009fe40;" goto statement_identifier ;) })) }))))) (expression_statement "puVar10 = (undefined *)(unaff_EBP + 0x323ff);" (assignment_expression "puVar10 = (undefined *)(unaff_EBP + 0x323ff)" identifier = (cast_expression "(undefined *)(unaff_EBP + 0x323ff)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x323ff)" ( (binary_expression "unaff_EBP + 0x323ff" identifier + number_literal) )))) ;) }) (else_clause "else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" else (compound_statement "{\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" { (expression_statement "cVar6 = *pcVar25;" (assignment_expression "cVar6 = *pcVar25" identifier = (pointer_expression "*pcVar25" * identifier)) ;) (if_statement "if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" if (parenthesized_expression "(cVar6 == -0x7a)" ( (binary_expression "cVar6 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e87;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e87;" (assignment_expression "iVar19 = unaff_EBP + 0x31e87" identifier = (binary_expression "unaff_EBP + 0x31e87" identifier + number_literal)) ;) }) (else_clause "else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" else (if_statement "if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" if (parenthesized_expression "(cVar6 == -0x79)" ( (binary_expression "cVar6 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e7d;\n    }" { (expression_statement "iVar19 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar19 = unaff_EBP + 0x31e7d" identifier = (binary_expression "unaff_EBP + 0x31e7d" identifier + number_literal)) ;) }) (else_clause "else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" else (compound_statement "{\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" { (if_statement "if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }" if (parenthesized_expression "(cVar6 != -0x7b)" ( (binary_expression "cVar6 != -0x7b" identifier != number_literal) )) (compound_statement "{\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }" { (expression_statement "iVar19 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar19 = unaff_EBP + 0x31e8e" identifier = (binary_expression "unaff_EBP + 0x31e8e" identifier + number_literal)) ;) (expression_statement "puVar10 = &UNK_0003228a + unaff_EBP;" (assignment_expression "puVar10 = &UNK_0003228a + unaff_EBP" identifier = (binary_expression "&UNK_0003228a + unaff_EBP" (pointer_expression "&UNK_0003228a" & identifier) + identifier)) ;) (goto_statement "goto LAB_0009fe40;" goto statement_identifier ;) })) (expression_statement "iVar19 = unaff_EBP + 0x31e73;" (assignment_expression "iVar19 = unaff_EBP + 0x31e73" identifier = (binary_expression "unaff_EBP + 0x31e73" identifier + number_literal)) ;) }))))) (expression_statement "puVar10 = &UNK_0003228a + unaff_EBP;" (assignment_expression "puVar10 = &UNK_0003228a + unaff_EBP" identifier = (binary_expression "&UNK_0003228a + unaff_EBP" (pointer_expression "&UNK_0003228a" & identifier) + identifier)) ;) }))) (labeled_statement "LAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);" statement_identifier : (expression_statement "FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);" (call_expression "FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19)" identifier (argument_list "(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19)" ( identifier , (binary_expression "&UNK_00034d67 + unaff_EBP" (pointer_expression "&UNK_00034d67" & identifier) + identifier) , identifier , identifier ))) ;)) (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0 = (byte *)0x1;" (assignment_expression "local_d0 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return (uint)local_d0;\n  }" { (return_statement "return (uint)local_d0;" return (cast_expression "(uint)local_d0" ( (type_descriptor "uint" type_identifier) ) identifier) ;) }))) (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * 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 (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 *)) ) (parenthesized_expression ( (binary_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 = (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 ])) ;) (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 { (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 ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (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 = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , 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 IDENT & LIT) )) == LIT) )) (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_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 IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression LIT < (pointer_expression * IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) 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 = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (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)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (pointer_expression * IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (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) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression 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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (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 ]) = (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (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) )))) == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) <= IDENT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (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 ')) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) ))) )) (compound_statement { (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) )))) < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_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 ')) && (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 (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) }))) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (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 (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( 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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (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 (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) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (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) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( 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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) == LIT))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 { (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) )))) < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) + LIT) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (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) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression 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 = (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 (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 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) != 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 IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 (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 ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) || (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (goto_statement goto statement_identifier ;) })) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression IDENT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) * LIT) + LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ))) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT) * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> IDENT) | (binary_expression IDENT << (binary_expression LIT - IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (labeled_statement statement_identifier : (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 (binary_expression IDENT + LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , 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 = (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)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (pointer_expression * IDENT) == LIT) )) (compound_statement { (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 (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) && (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 ]) + LIT)) ;) (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 ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;)) })) (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 (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 = (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 (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (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 = (call_expression IDENT (argument_list ( 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 = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , 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 = (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 = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (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 ( LIT , LIT , (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 = (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 (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 = (call_expression IDENT (argument_list ( 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != IDENT)) ))) )) )) (compound_statement { (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 (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) ))))) ;) })) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + 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 * (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 IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , 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 = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + 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 * (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 IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) ))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != 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) )))))) ;) (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)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) * LIT)) + 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 IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (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 IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) }))) (labeled_statement statement_identifier : (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 (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) }) (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) ))))) ;) (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != 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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & 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 IDENT + LIT) ))))) ;) (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 = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (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 (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , LIT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , LIT , LIT ))) ;) }))) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (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 IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) }))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "uint __regparm3 FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000d1450();\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0009fda0(undefined4 param_1,byte *param_2,undefined4 *param_3)" (identifier "FUN_0009fda0") (parameter_list "(undefined4 param_1,byte *param_2,undefined4 *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  ushort *puVar1;\n  uint *puVar2;\n  byte *pbVar3;\n  uint uVar4;\n  short sVar5;\n  char cVar6;\n  byte bVar7;\n  undefined2 uVar8;\n  short sVar9;\n  undefined *puVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  int *piVar20;\n  int iVar21;\n  undefined4 uVar22;\n  uint uVar23;\n  short sVar24;\n  char *pcVar25;\n  int extraout_EDX;\n  byte *pbVar26;\n  int unaff_EBP;\n  uint uVar27;\n  int *piVar28;\n  int iVar29;\n  int in_GS_OFFSET;\n  bool bVar30;\n  undefined8 uVar31;\n  byte *local_d0;\n  int *local_cc;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b0;\n  undefined4 local_a8;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_88;\n  undefined4 local_74;\n  int local_70;\n  undefined4 local_6c;\n  undefined4 local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  undefined1 local_58;\n  int local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_3c;\n  int local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x9fdad;\n  uVar31 = FUN_000d0ab3();\n  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);\n  piVar20 = (int *)uVar31;\n  iVar19 = *(int *)(pcVar25 + 0x34);\n  iVar15 = *piVar20;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_74 = *param_3;\n  local_70 = param_3[1];\n  local_6c = param_3[2];\n  local_68 = param_3[3];\n  local_64 = param_3[4];\n  local_60 = param_3[5];\n  local_5c = param_3[6];\n  if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }\nLAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000d1450();\n}" ({ "{") (declaration "ushort *puVar1;" (type_identifier "ushort") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "short sVar5;" (sized_type_specifier "short" (short "short")) (identifier "sVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (declaration "undefined2 uVar8;" (type_identifier "undefined2") (identifier "uVar8") (; ";")) (declaration "short sVar9;" (sized_type_specifier "short" (short "short")) (identifier "sVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "undefined4 uVar22;" (type_identifier "undefined4") (identifier "uVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "short sVar24;" (sized_type_specifier "short" (short "short")) (identifier "sVar24") (; ";")) (declaration "char *pcVar25;" (primitive_type "char") (pointer_declarator "*pcVar25" (* "*") (identifier "pcVar25")) (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "uint uVar27;" (type_identifier "uint") (identifier "uVar27") (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "int iVar29;" (primitive_type "int") (identifier "iVar29") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar30;" (primitive_type "bool") (identifier "bVar30") (; ";")) (declaration "undefined8 uVar31;" (type_identifier "undefined8") (identifier "uVar31") (; ";")) (declaration "byte *local_d0;" (type_identifier "byte") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "int *local_cc;" (primitive_type "int") (pointer_declarator "*local_cc" (* "*") (identifier "local_cc")) (; ";")) (declaration "int *local_c8;" (primitive_type "int") (pointer_declarator "*local_c8" (* "*") (identifier "local_c8")) (; ";")) (declaration "int local_c4;" (primitive_type "int") (identifier "local_c4") (; ";")) (declaration "int local_c0;" (primitive_type "int") (identifier "local_c0") (; ";")) (declaration "uint local_bc;" (type_identifier "uint") (identifier "local_bc") (; ";")) (declaration "int *local_b0;" (primitive_type "int") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "undefined4 local_a8;" (type_identifier "undefined4") (identifier "local_a8") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "undefined4 local_88;" (type_identifier "undefined4") (identifier "local_88") (; ";")) (declaration "undefined4 local_74;" (type_identifier "undefined4") (identifier "local_74") (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "undefined1 local_58;" (type_identifier "undefined1") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int *local_24;" (primitive_type "int") (pointer_declarator "*local_24" (* "*") (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 "uStack_14 = 0x9fdad;" (assignment_expression "uStack_14 = 0x9fdad" (identifier "uStack_14") (= "=") (number_literal "0x9fdad")) (; ";")) (expression_statement "uVar31 = FUN_000d0ab3();" (assignment_expression "uVar31 = FUN_000d0ab3()" (identifier "uVar31") (= "=") (call_expression "FUN_000d0ab3()" (identifier "FUN_000d0ab3") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);" (assignment_expression "pcVar25 = (char *)((ulonglong)uVar31 >> 0x20)" (identifier "pcVar25") (= "=") (cast_expression "(char *)((ulonglong)uVar31 >> 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar31 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar31 >> 0x20" (cast_expression "(ulonglong)uVar31" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar31")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar20 = (int *)uVar31;" (assignment_expression "piVar20 = (int *)uVar31" (identifier "piVar20") (= "=") (cast_expression "(int *)uVar31" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar31"))) (; ";")) (expression_statement "iVar19 = *(int *)(pcVar25 + 0x34);" (assignment_expression "iVar19 = *(int *)(pcVar25 + 0x34)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(pcVar25 + 0x34)" (* "*") (cast_expression "(int *)(pcVar25 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar25 + 0x34)" (( "(") (binary_expression "pcVar25 + 0x34" (identifier "pcVar25") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar15 = *piVar20;" (assignment_expression "iVar15 = *piVar20" (identifier "iVar15") (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (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 "local_74 = *param_3;" (assignment_expression "local_74 = *param_3" (identifier "local_74") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "local_70 = param_3[1];" (assignment_expression "local_70 = param_3[1]" (identifier "local_70") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_6c = param_3[2];" (assignment_expression "local_6c = param_3[2]" (identifier "local_6c") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_68 = param_3[3];" (assignment_expression "local_68 = param_3[3]" (identifier "local_68") (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_64 = param_3[4];" (assignment_expression "local_64 = param_3[4]" (identifier "local_64") (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_60 = param_3[5];" (assignment_expression "local_60 = param_3[5]" (identifier "local_60") (= "=") (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_5c = param_3[6];" (assignment_expression "local_5c = param_3[6]" (identifier "local_5c") (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar19 + 0x30) == 0) {\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }\n  else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar19 + 0x30) == 0)" (( "(") (binary_expression "*(int *)(iVar19 + 0x30) == 0" (pointer_expression "*(int *)(iVar19 + 0x30)" (* "*") (cast_expression "(int *)(iVar19 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x30)" (( "(") (binary_expression "iVar19 + 0x30" (identifier "iVar19") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }\n    puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n  }" ({ "{") (if_statement "if (*(int *)(iVar19 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar19 + 0x3c) == 0)" (( "(") (binary_expression "*(int *)(iVar19 + 0x3c) == 0" (pointer_expression "*(int *)(iVar19 + 0x3c)" (* "*") (cast_expression "(int *)(iVar19 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x3c)" (( "(") (binary_expression "iVar19 + 0x3c" (identifier "iVar19") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }\n      uVar12 = *(uint *)(param_2 + 4);\n      if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_0009fe71;\n    }" ({ "{") (expression_statement "local_c8 = (int *)piVar20[2];" (assignment_expression "local_c8 = (int *)piVar20[2]" (identifier "local_c8") (= "=") (cast_expression "(int *)piVar20[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar20[2]" (identifier "piVar20") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_00049b90();\n      }" (if "if") (parenthesized_expression "(local_c8 == (int *)0x0)" (( "(") (binary_expression "local_c8 == (int *)0x0" (identifier "local_c8") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_c8 = (int *)FUN_00049b90();\n      }" ({ "{") (expression_statement "local_c8 = (int *)FUN_00049b90();" (assignment_expression "local_c8 = (int *)FUN_00049b90()" (identifier "local_c8") (= "=") (cast_expression "(int *)FUN_00049b90()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00049b90()" (identifier "FUN_00049b90") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}"))) (if_statement "if ((char)local_74 == '\f') {\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" (if "if") (parenthesized_expression "((char)local_74 == '\f')" (( "(") (binary_expression "(char)local_74 == '\f'" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (== "==") (char_literal "'\f'" (' "'") (escape_sequence "\f") (' "'"))) () ")")) (compound_statement "{\n        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" ({ "{") (expression_statement "FUN_00049630(**(undefined4 **)(param_2 + 0x1c));" (call_expression "FUN_00049630(**(undefined4 **)(param_2 + 0x1c))" (identifier "FUN_00049630") (argument_list "(**(undefined4 **)(param_2 + 0x1c))" (( "(") (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" (* "*") (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) () ")"))) (; ";")) (expression_statement "local_74 = CONCAT31(local_74._1_3_,0xe);" (assignment_expression "local_74 = CONCAT31(local_74._1_3_,0xe)" (identifier "local_74") (= "=") (call_expression "CONCAT31(local_74._1_3_,0xe)" (identifier "CONCAT31") (argument_list "(local_74._1_3_,0xe)" (( "(") (field_expression "local_74._1_3_" (identifier "local_74") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "0xe") () ")")))) (; ";")) (} "}"))) (expression_statement "uVar12 = *(uint *)(param_2 + 4);" (assignment_expression "uVar12 = *(uint *)(param_2 + 4)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((uVar12 & 0x400) == 0) {\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }\n      else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" (if "if") (parenthesized_expression "((uVar12 & 0x400) == 0)" (( "(") (binary_expression "(uVar12 & 0x400) == 0" (parenthesized_expression "(uVar12 & 0x400)" (( "(") (binary_expression "uVar12 & 0x400" (identifier "uVar12") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }\n        piVar28 = *(int **)(param_2 + 0x20);\n        local_c0 = **(undefined4 **)(param_2 + 0x1c);\n        local_d0 = *(byte **)(param_2 + 0x34);\n        if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }\n        if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }\n      }" ({ "{") (if_statement "if ((uVar12 & 0x2000) == 0) {\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }" (if "if") (parenthesized_expression "((uVar12 & 0x2000) == 0)" (( "(") (binary_expression "(uVar12 & 0x2000) == 0" (parenthesized_expression "(uVar12 & 0x2000)" (( "(") (binary_expression "uVar12 & 0x2000" (identifier "uVar12") (& "&") (number_literal "0x2000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);\n          if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }\n          if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }\n          bVar7 = *param_2;\n          if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }\nLAB_000a0696:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_0009fe71;\n        }" ({ "{") (labeled_statement "LAB_0009ff43:\n          local_b0 = *(int **)(param_2 + 0x30);" (statement_identifier "LAB_0009ff43") (: ":") (expression_statement "local_b0 = *(int **)(param_2 + 0x30);" (assignment_expression "local_b0 = *(int **)(param_2 + 0x30)" (identifier "local_b0") (= "=") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";"))) (if_statement "if (local_b0 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }" (if "if") (parenthesized_expression "(local_b0 != (int *)0x0)" (( "(") (binary_expression "local_b0 != (int *)0x0" (identifier "local_b0") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar19 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            uVar12 = (uint)*param_2;\n            iVar29 = *(int *)(param_2 + 0x34);\n            iVar21 = *local_b0;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }\n            piVar14 = (int *)FUN_0002ef70();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }\n            *(int **)(param_2 + 0x30) = local_b0;\n            uVar16 = FUN_0005f2e0();\n            *(undefined4 *)(iVar29 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            piVar14 = *(int **)(param_2 + 0x30);\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar29 + 0x38) = 0;\n            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }\n            FUN_00094cf0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            local_58 = 0xd;\n            local_50 = 0;\n            local_44 = 0;\n            local_4c = 0;\n            iVar15 = piVar20[0xb];\n            local_48 = 0;\n            local_3c = CONCAT31(local_3c._1_3_,0xd);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_38 = iVar15 + 2;\n            local_54 = iVar15 + 1;\n            local_2c = 0;\n            piVar20[0xb] = iVar15 + 4;\n            bVar7 = *param_2;\n            iVar13 = unaff_EBP + 0x31e87;\n            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar29 + 8) = local_9c;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);\n            FUN_0008d250();\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar22 = *(undefined4 *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            *(int *)(param_2 + 8) = local_90;\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);\n            FUN_0008d250();\n            *(undefined4 *)(param_2 + 0xc) = uVar22;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_00049630(0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);\n            local_88 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }\n            if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }\n            iVar15 = iVar19;\n            local_94 = iVar19;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }\n            iVar19 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }\n            FUN_00049630(local_b0);\n            FUN_00049630(iVar11);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }\n            iVar11 = unaff_EBP + 0x67823;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_00049630(local_94);\n            FUN_00049630(local_b0);\n            FUN_000330b0();\n            FUN_00049630(0);\n            FUN_000436c0(0xfffffff1);\n            FUN_000493f0(local_30,iVar21);\n            FUN_000436c0(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000493f0(local_a8,iVar19);\n            FUN_000330b0();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }\n            *(int *)(param_2 + 0x34) = iVar29;\n            *(byte **)(iVar29 + 0x38) = param_2;\n            iVar19 = piVar20[0x36];\n            if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar19;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_0009fe71;\n          }" ({ "{") (expression_statement "iVar15 = *piVar20;" (assignment_expression "iVar15 = *piVar20" (identifier "iVar15") (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" (identifier "piVar28") (= "=") (cast_expression "(int *)piVar20[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar20[2]" (identifier "piVar20") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" (identifier "iVar19") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar11 = piVar20[0xe] + -2;" (assignment_expression "iVar11 = piVar20[0xe] + -2" (identifier "iVar11") (= "=") (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar20[0xe] = iVar11;" (assignment_expression "piVar20[0xe] = iVar11" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "uVar12 = (uint)*param_2;" (assignment_expression "uVar12 = (uint)*param_2" (identifier "uVar12") (= "=") (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar29 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar29 = *(int *)(param_2 + 0x34)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "iVar21 = *local_b0;" (assignment_expression "iVar21 = *local_b0" (identifier "iVar21") (= "=") (pointer_expression "*local_b0" (* "*") (identifier "local_b0"))) (; ";")) (if_statement "if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }" (if "if") (parenthesized_expression "(((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc))" (( "(") (binary_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)" (parenthesized_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0'))" (( "(") (binary_expression "(uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')" (parenthesized_expression "(uVar12 != 0x85)" (( "(") (binary_expression "uVar12 != 0x85" (identifier "uVar12") (!= "!=") (number_literal "0x85")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar15 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar15 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x4d)" (* "*") (cast_expression "(char *)(iVar15 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x4d)" (( "(") (binary_expression "iVar15 + 0x4d" (identifier "iVar15") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)" (( "(") (comma_expression "local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc" (assignment_expression "local_cc = *(int **)(param_2 + 0x1c)" (identifier "local_cc") (= "=") (pointer_expression "*(int **)(param_2 + 0x1c)" (* "*") (cast_expression "(int **)(param_2 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (, ",") (binary_expression "0 < *local_cc" (number_literal "0") (< "<") (pointer_expression "*local_cc" (* "*") (identifier "local_cc")))) () ")"))) () ")")) (compound_statement "{\n              uVar27 = 1;\n              do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);\n            }" ({ "{") (expression_statement "uVar27 = 1;" (assignment_expression "uVar27 = 1" (identifier "uVar27") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              } while ((int)uVar27 <= *local_cc);" (do "do") (compound_statement "{\n                if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }\n                uVar27 = uVar27 + 1;\n              }" ({ "{") (if_statement "if (iVar21 < 1) {\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }\n                else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" (if "if") (parenthesized_expression "(iVar21 < 1)" (( "(") (binary_expression "iVar21 < 1" (identifier "iVar21") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                  if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }\n                }" ({ "{") (if_statement "if (iVar21 == 0) {\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a000e:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002fd80();\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar27;\n                    local_b0 = (int *)FUN_00054ef0();\n                    *(int **)(param_2 + 0x30) = local_b0;\n                    if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }\n                    if (cVar6 != '\0') break;\n                    local_cc = *(int **)(param_2 + 0x1c);\n                  }" ({ "{") (labeled_statement "LAB_000a000e:\n                    local_3c = 0;" (statement_identifier "LAB_000a000e") (: ":") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = FUN_0002fd80();" (assignment_expression "iVar13 = FUN_0002fd80()" (identifier "iVar13") (= "=") (call_expression "FUN_0002fd80()" (identifier "FUN_0002fd80") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      local_d0 = (byte *)0x7;\n                      goto LAB_0009fe71;\n                    }" ({ "{") (expression_statement "local_d0 = (byte *)0x7;" (assignment_expression "local_d0 = (byte *)0x7" (identifier "local_d0") (= "=") (cast_expression "(byte *)0x7" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7"))) (; ";")) (goto_statement "goto LAB_0009fe71;" (goto "goto") (statement_identifier "LAB_0009fe71") (; ";")) (} "}"))) (expression_statement "*(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;" (assignment_expression "*(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400" (pointer_expression "*(uint *)(iVar13 + 4)" (* "*") (cast_expression "(uint *)(iVar13 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 4)" (( "(") (binary_expression "iVar13 + 4" (identifier "iVar13") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar13 + 4) | 0x400" (pointer_expression "*(uint *)(iVar13 + 4)" (* "*") (cast_expression "(uint *)(iVar13 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 4)" (( "(") (binary_expression "iVar13 + 4" (identifier "iVar13") (+ "+") (number_literal "4")) () ")")))) (| "|") (number_literal "0x400"))) (; ";")) (expression_statement "*(uint *)(iVar13 + 8) = uVar27;" (assignment_expression "*(uint *)(iVar13 + 8) = uVar27" (pointer_expression "*(uint *)(iVar13 + 8)" (* "*") (cast_expression "(uint *)(iVar13 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 8)" (( "(") (binary_expression "iVar13 + 8" (identifier "iVar13") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "local_b0 = (int *)FUN_00054ef0();" (assignment_expression "local_b0 = (int *)FUN_00054ef0()" (identifier "local_b0") (= "=") (cast_expression "(int *)FUN_00054ef0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00054ef0()" (identifier "FUN_00054ef0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(int **)(param_2 + 0x30) = local_b0;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b0" (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "local_b0")) (; ";")) (if_statement "if (local_b0 == (int *)0x0) {\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }\n                    else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" (if "if") (parenthesized_expression "(local_b0 == (int *)0x0)" (( "(") (binary_expression "local_b0 == (int *)0x0" (identifier "local_b0") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                    }" ({ "{") (expression_statement "cVar6 = *(char *)(iVar15 + 0x4d);" (assignment_expression "cVar6 = *(char *)(iVar15 + 0x4d)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(iVar15 + 0x4d)" (* "*") (cast_expression "(char *)(iVar15 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x4d)" (( "(") (binary_expression "iVar15 + 0x4d" (identifier "iVar15") (+ "+") (number_literal "0x4d")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" (else "else") (compound_statement "{\n                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;\n                      cVar6 = *(char *)(iVar15 + 0x4d);\n                      iVar21 = iVar21 + 1;\n                    }" ({ "{") (expression_statement "*(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;" (assignment_expression "*(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27" (pointer_expression "*(short *)(local_b0 + iVar21 * 4 + 4)" (* "*") (cast_expression "(short *)(local_b0 + iVar21 * 4 + 4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + iVar21 * 4 + 4)" (( "(") (binary_expression "local_b0 + iVar21 * 4 + 4" (binary_expression "local_b0 + iVar21 * 4" (identifier "local_b0") (+ "+") (binary_expression "iVar21 * 4" (identifier "iVar21") (* "*") (number_literal "4"))) (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(short)uVar27" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar27"))) (; ";")) (expression_statement "cVar6 = *(char *)(iVar15 + 0x4d);" (assignment_expression "cVar6 = *(char *)(iVar15 + 0x4d)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(iVar15 + 0x4d)" (* "*") (cast_expression "(char *)(iVar15 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x4d)" (( "(") (binary_expression "iVar15 + 0x4d" (identifier "iVar15") (+ "+") (number_literal "0x4d")) () ")"))))) (; ";")) (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" (identifier "iVar21") (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (cVar6 != '\0') break;" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_cc = *(int **)(param_2 + 0x1c);" (assignment_expression "local_cc = *(int **)(param_2 + 0x1c)" (identifier "local_cc") (= "=") (pointer_expression "*(int **)(param_2 + 0x1c)" (* "*") (cast_expression "(int **)(param_2 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" (else "else") (if_statement "if (*(ushort *)(local_b0 + 4) != uVar27) {\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" (if "if") (parenthesized_expression "(*(ushort *)(local_b0 + 4) != uVar27)" (( "(") (binary_expression "*(ushort *)(local_b0 + 4) != uVar27" (pointer_expression "*(ushort *)(local_b0 + 4)" (* "*") (cast_expression "(ushort *)(local_b0 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 4)" (( "(") (binary_expression "local_b0 + 4" (identifier "local_b0") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (identifier "uVar27")) () ")")) (compound_statement "{\n                  iVar13 = 0;\n                  piVar14 = local_b0 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);\n                }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar14 = local_b0 + 1;" (assignment_expression "piVar14 = local_b0 + 1" (identifier "piVar14") (= "=") (binary_expression "local_b0 + 1" (identifier "local_b0") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar27);" (do "do") (compound_statement "{\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == iVar21) goto LAB_000a000e;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  }" ({ "{") (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar13 == iVar21) goto LAB_000a000e;" (if "if") (parenthesized_expression "(iVar13 == iVar21)" (( "(") (binary_expression "iVar13 == iVar21" (identifier "iVar13") (== "==") (identifier "iVar21")) () ")")) (goto_statement "goto LAB_000a000e;" (goto "goto") (statement_identifier "LAB_000a000e") (; ";"))) (expression_statement "puVar1 = (ushort *)(piVar14 + 7);" (assignment_expression "puVar1 = (ushort *)(piVar14 + 7)" (identifier "puVar1") (= "=") (cast_expression "(ushort *)(piVar14 + 7)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar14 + 7)" (( "(") (binary_expression "piVar14 + 7" (identifier "piVar14") (+ "+") (number_literal "7")) () ")")))) (; ";")) (expression_statement "piVar14 = piVar14 + 4;" (assignment_expression "piVar14 = piVar14 + 4" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 4" (identifier "piVar14") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar1 != uVar27)" (( "(") (binary_expression "*puVar1 != uVar27" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (!= "!=") (identifier "uVar27")) () ")")) (; ";")) (} "}"))))) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar27 <= *local_cc)" (( "(") (binary_expression "(int)uVar27 <= *local_cc" (cast_expression "(int)uVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar27")) (<= "<=") (pointer_expression "*local_cc" (* "*") (identifier "local_cc"))) () ")")) (; ";")) (} "}"))) (expression_statement "piVar14 = (int *)FUN_0002ef70();" (assignment_expression "piVar14 = (int *)FUN_0002ef70()" (identifier "piVar14") (= "=") (cast_expression "(int *)FUN_0002ef70()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002ef70()" (identifier "FUN_0002ef70") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar14 != (int *)0x0) {\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *piVar14 = iVar21;\n              if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }\n              FUN_00050020();\n            }" ({ "{") (expression_statement "*piVar14 = iVar21;" (assignment_expression "*piVar14 = iVar21" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (0 < iVar21) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }" (if "if") (parenthesized_expression "(0 < iVar21)" (( "(") (binary_expression "0 < iVar21" (number_literal "0") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);\n              }" ({ "{") (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (iVar21 * 4 != iVar15);" (do "do") (compound_statement "{\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                }" ({ "{") (expression_statement "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;" (assignment_expression "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1" (pointer_expression "*(uint *)((int)piVar14 + iVar15 + 4)" (* "*") (cast_expression "(uint *)((int)piVar14 + iVar15 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar14 + iVar15 + 4)" (( "(") (binary_expression "(int)piVar14 + iVar15 + 4" (binary_expression "(int)piVar14 + iVar15" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (+ "+") (identifier "iVar15")) (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(ushort *)(local_b0 + iVar15 + 4) - 1" (pointer_expression "*(ushort *)(local_b0 + iVar15 + 4)" (* "*") (cast_expression "(ushort *)(local_b0 + iVar15 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + iVar15 + 4)" (( "(") (binary_expression "local_b0 + iVar15 + 4" (binary_expression "local_b0 + iVar15" (identifier "local_b0") (+ "+") (identifier "iVar15")) (+ "+") (number_literal "4")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar15 = iVar15 + 4;" (assignment_expression "iVar15 = iVar15 + 4" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 4" (identifier "iVar15") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 * 4 != iVar15)" (( "(") (binary_expression "iVar21 * 4 != iVar15" (binary_expression "iVar21 * 4" (identifier "iVar21") (* "*") (number_literal "4")) (!= "!=") (identifier "iVar15")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00050020();" (call_expression "FUN_00050020()" (identifier "FUN_00050020") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int **)(param_2 + 0x30) = local_b0;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b0" (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "local_b0")) (; ";")) (expression_statement "uVar16 = FUN_0005f2e0();" (assignment_expression "uVar16 = FUN_0005f2e0()" (identifier "uVar16") (= "=") (call_expression "FUN_0005f2e0()" (identifier "FUN_0005f2e0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar29 + 0x30) = uVar16;" (assignment_expression "*(undefined4 *)(iVar29 + 0x30) = uVar16" (pointer_expression "*(undefined4 *)(iVar29 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar29 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x30)" (( "(") (binary_expression "iVar29 + 0x30" (identifier "iVar29") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (uVar12 == 0x85) {\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" (if "if") (parenthesized_expression "(uVar12 == 0x85)" (( "(") (binary_expression "uVar12 == 0x85" (identifier "uVar12") (== "==") (number_literal "0x85")) () ")")) (compound_statement "{\n              local_b0 = (int *)0x0;\n              local_94 = 0;\n            }" ({ "{") (expression_statement "local_b0 = (int *)0x0;" (assignment_expression "local_b0 = (int *)0x0" (identifier "local_b0") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" (else "else") (compound_statement "{\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_94 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_00049630(local_94);\n              local_b0 = (int *)FUN_0002fcc0();\n              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" ({ "{") (expression_statement "iVar15 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar15 = **(int **)(param_2 + 0x1c)" (identifier "iVar15") (= "=") (pointer_expression "**(int **)(param_2 + 0x1c)" (* "*") (pointer_expression "*(int **)(param_2 + 0x1c)" (* "*") (cast_expression "(int **)(param_2 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (expression_statement "local_94 = piVar20[0xb] + 1;" (assignment_expression "local_94 = piVar20[0xb] + 1" (identifier "local_94") (= "=") (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar20[0xb] = iVar15 + 1 + piVar20[0xb];" (assignment_expression "piVar20[0xb] = iVar15 + 1 + piVar20[0xb]" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar15 + 1 + piVar20[0xb]" (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1")) (+ "+") (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (expression_statement "FUN_00049630(local_94);" (call_expression "FUN_00049630(local_94)" (identifier "FUN_00049630") (argument_list "(local_94)" (( "(") (identifier "local_94") () ")"))) (; ";")) (expression_statement "local_b0 = (int *)FUN_0002fcc0();" (assignment_expression "local_b0 = (int *)FUN_0002fcc0()" (identifier "local_b0") (= "=") (cast_expression "(int *)FUN_0002fcc0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002fcc0()" (identifier "FUN_0002fcc0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if ((local_b0 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" (if "if") (parenthesized_expression "((local_b0 != (int *)0x0) && (0 < iVar15))" (( "(") (binary_expression "(local_b0 != (int *)0x0) && (0 < iVar15)" (parenthesized_expression "(local_b0 != (int *)0x0)" (( "(") (binary_expression "local_b0 != (int *)0x0" (identifier "local_b0") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(0 < iVar15)" (( "(") (binary_expression "0 < iVar15" (number_literal "0") (< "<") (identifier "iVar15")) () ")"))) () ")")) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);" (do "do") (compound_statement "{\n                  iVar18 = *(int *)(param_2 + 0x34);\n                  if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }\n                  local_b0[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_b0[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                }" ({ "{") (expression_statement "iVar18 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar18 = *(int *)(param_2 + 0x34)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if ((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }" (if "if") (parenthesized_expression "((iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))))))" (( "(") (binary_expression "(iVar18 == 0) ||\n                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))" (parenthesized_expression "(iVar18 == 0)" (( "(") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))" (( "(") (parenthesized_expression "((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))))" (( "(") (binary_expression "(*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))" (parenthesized_expression "(*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)\n                       )" (( "(") (binary_expression "*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)" (binary_expression "*(int *)(iVar18 + 0x34) == 0" (pointer_expression "*(int *)(iVar18 + 0x34)" (* "*") (cast_expression "(int *)(iVar18 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x34)" (( "(") (binary_expression "iVar18 + 0x34" (identifier "iVar18") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)" (( "(") (comma_expression "iVar17 = FUN_0004ff90(iVar13), iVar17 == 0" (assignment_expression "iVar17 = FUN_0004ff90(iVar13)" (identifier "iVar17") (= "=") (call_expression "FUN_0004ff90(iVar13)" (identifier "FUN_0004ff90") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (, ",") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)))" (( "(") (parenthesized_expression "(**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0))" (( "(") (binary_expression "**(int **)(iVar18 + 0x1c) <= iVar13 ||\n                             (iVar17 = FUN_0004f300(), iVar17 == 0)" (binary_expression "**(int **)(iVar18 + 0x1c) <= iVar13" (pointer_expression "**(int **)(iVar18 + 0x1c)" (* "*") (pointer_expression "*(int **)(iVar18 + 0x1c)" (* "*") (cast_expression "(int **)(iVar18 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar18 + 0x1c)" (( "(") (binary_expression "iVar18 + 0x1c" (identifier "iVar18") (+ "+") (number_literal "0x1c")) () ")"))))) (<= "<=") (identifier "iVar13")) (|| "||") (parenthesized_expression "(iVar17 = FUN_0004f300(), iVar17 == 0)" (( "(") (comma_expression "iVar17 = FUN_0004f300(), iVar17 == 0" (assignment_expression "iVar17 = FUN_0004f300()" (identifier "iVar17") (= "=") (call_expression "FUN_0004f300()" (identifier "FUN_0004f300") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                    if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }\n                  }" ({ "{") (if_statement "if (iVar13 < **(int **)(param_2 + 0x1c)) {\n                      iVar17 = FUN_0004f300();\n                    }\n                    else {\n                      iVar17 = 0;\n                    }" (if "if") (parenthesized_expression "(iVar13 < **(int **)(param_2 + 0x1c))" (( "(") (binary_expression "iVar13 < **(int **)(param_2 + 0x1c)" (identifier "iVar13") (< "<") (pointer_expression "**(int **)(param_2 + 0x1c)" (* "*") (pointer_expression "*(int **)(param_2 + 0x1c)" (* "*") (cast_expression "(int **)(param_2 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))))) () ")")) (compound_statement "{\n                      iVar17 = FUN_0004f300();\n                    }" ({ "{") (expression_statement "iVar17 = FUN_0004f300();" (assignment_expression "iVar17 = FUN_0004f300()" (identifier "iVar17") (= "=") (call_expression "FUN_0004f300()" (identifier "FUN_0004f300") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                      iVar17 = 0;\n                    }" (else "else") (compound_statement "{\n                      iVar17 = 0;\n                    }" ({ "{") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "local_b0[iVar13 + 5] = iVar17;" (assignment_expression "local_b0[iVar13 + 5] = iVar17" (subscript_expression "local_b0[iVar13 + 5]" (identifier "local_b0") ([ "[") (binary_expression "iVar13 + 5" (identifier "iVar13") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "*(undefined1 *)(local_b0[4] + iVar13) = 0;" (assignment_expression "*(undefined1 *)(local_b0[4] + iVar13) = 0" (pointer_expression "*(undefined1 *)(local_b0[4] + iVar13)" (* "*") (cast_expression "(undefined1 *)(local_b0[4] + iVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0[4] + iVar13)" (( "(") (binary_expression "local_b0[4] + iVar13" (subscript_expression "local_b0[4]" (identifier "local_b0") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar15 != iVar13)" (( "(") (binary_expression "iVar15 != iVar13" (identifier "iVar15") (!= "!=") (identifier "iVar13")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar14 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar14 = *(int **)(param_2 + 0x30)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" (identifier "param_2") ([ "[") (number_literal "0x34") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" (identifier "param_2") ([ "[") (number_literal "0x35") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" (identifier "param_2") ([ "[") (number_literal "0x36") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" (identifier "param_2") ([ "[") (number_literal "0x37") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar29 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar29 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar29 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar29 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x38)" (( "(") (binary_expression "iVar29 + 0x38" (identifier "iVar29") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)) {\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" (if "if") (parenthesized_expression "(((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2))" (( "(") (binary_expression "((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&\n               (*(byte *)(piVar20 + 0x33) < 2)" (parenthesized_expression "((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0'))" (( "(") (binary_expression "(piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')" (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar20 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar20 + 0x4d)" (( "(") (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)(piVar20 + 0x33) < 2)" (( "(") (binary_expression "*(byte *)(piVar20 + 0x33) < 2" (pointer_expression "*(byte *)(piVar20 + 0x33)" (* "*") (cast_expression "(byte *)(piVar20 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar20 + 0x33)" (( "(") (binary_expression "piVar20 + 0x33" (identifier "piVar20") (+ "+") (number_literal "0x33")) () ")")))) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n              if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" ({ "{") (if_statement "if (*(int *)(*piVar20 + 0x70) < *piVar14) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" (if "if") (parenthesized_expression "(*(int *)(*piVar20 + 0x70) < *piVar14)" (( "(") (binary_expression "*(int *)(*piVar20 + 0x70) < *piVar14" (pointer_expression "*(int *)(*piVar20 + 0x70)" (* "*") (cast_expression "(int *)(*piVar20 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar20 + 0x70)" (( "(") (binary_expression "*piVar20 + 0x70" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (+ "+") (number_literal "0x70")) () ")")))) (< "<") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) () ")")) (compound_statement "{\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);\n              }" ({ "{") (expression_statement "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);" (call_expression "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14)" (identifier "FUN_0003d470") (argument_list "(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14)" (( "(") (identifier "piVar20") (, ",") (binary_expression "unaff_EBP + 0x3462f" (identifier "unaff_EBP") (+ "+") (number_literal "0x3462f")) (, ",") (binary_expression "unaff_EBP + 0x31e94" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e94")) (, ",") (identifier "piVar14") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" (else "else") (compound_statement "{\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" ({ "{") (expression_statement "FUN_0005e800(unaff_EBP + 0x31e94);" (call_expression "FUN_0005e800(unaff_EBP + 0x31e94)" (identifier "FUN_0005e800") (argument_list "(unaff_EBP + 0x31e94)" (( "(") (binary_expression "unaff_EBP + 0x31e94" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e94")) () ")"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" (if "if") (parenthesized_expression "(((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2))))" (( "(") (binary_expression "((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&\n               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))" (parenthesized_expression "((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0))" (( "(") (binary_expression "(*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)" (parenthesized_expression "(*(int *)(iVar29 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(iVar29 + 0x34) == 0" (pointer_expression "*(int *)(iVar29 + 0x34)" (* "*") (cast_expression "(int *)(iVar29 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 0x34)" (( "(") (binary_expression "iVar29 + 0x34" (identifier "iVar29") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int **)(iVar29 + 0x30) != (int *)0x0)" (( "(") (binary_expression "*(int **)(iVar29 + 0x30) != (int *)0x0" (pointer_expression "*(int **)(iVar29 + 0x30)" (* "*") (cast_expression "(int **)(iVar29 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar29 + 0x30)" (( "(") (binary_expression "iVar29 + 0x30" (identifier "iVar29") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))" (( "(") (parenthesized_expression "(*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2))" (( "(") (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)" (binary_expression "*(char *)(*piVar20 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar20 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar20 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar20 + 0x4d)" (( "(") (binary_expression "*piVar20 + 0x4d" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(*(byte *)(piVar20 + 0x33) < 2)" (( "(") (binary_expression "*(byte *)(piVar20 + 0x33) < 2" (pointer_expression "*(byte *)(piVar20 + 0x33)" (* "*") (cast_expression "(byte *)(piVar20 + 0x33)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar20 + 0x33)" (( "(") (binary_expression "piVar20 + 0x33" (identifier "piVar20") (+ "+") (number_literal "0x33")) () ")")))) (< "<") (number_literal "2")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              iVar15 = *(int *)(*piVar20 + 0x70);\n              if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }\n            }" ({ "{") (expression_statement "iVar15 = *(int *)(*piVar20 + 0x70);" (assignment_expression "iVar15 = *(int *)(*piVar20 + 0x70)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(*piVar20 + 0x70)" (* "*") (cast_expression "(int *)(*piVar20 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar20 + 0x70)" (( "(") (binary_expression "*piVar20 + 0x70" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (iVar15 < **(int **)(iVar29 + 0x30)) {\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }\n              else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" (if "if") (parenthesized_expression "(iVar15 < **(int **)(iVar29 + 0x30))" (( "(") (binary_expression "iVar15 < **(int **)(iVar29 + 0x30)" (identifier "iVar15") (< "<") (pointer_expression "**(int **)(iVar29 + 0x30)" (* "*") (pointer_expression "*(int **)(iVar29 + 0x30)" (* "*") (cast_expression "(int **)(iVar29 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar29 + 0x30)" (( "(") (binary_expression "iVar29 + 0x30" (identifier "iVar29") (+ "+") (number_literal "0x30")) () ")")))))) () ")")) (compound_statement "{\n                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);\n              }" ({ "{") (expression_statement "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);" (call_expression "FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15)" (identifier "FUN_0003d470") (argument_list "(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15)" (( "(") (identifier "piVar20") (, ",") (binary_expression "unaff_EBP + 0x3462f" (identifier "unaff_EBP") (+ "+") (number_literal "0x3462f")) (, ",") (binary_expression "unaff_EBP + 0x31e94" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e94")) (, ",") (identifier "iVar15") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" (else "else") (compound_statement "{\n                FUN_0005e800(unaff_EBP + 0x31e94);\n              }" ({ "{") (expression_statement "FUN_0005e800(unaff_EBP + 0x31e94);" (call_expression "FUN_0005e800(unaff_EBP + 0x31e94)" (identifier "FUN_0005e800") (argument_list "(unaff_EBP + 0x31e94)" (( "(") (binary_expression "unaff_EBP + 0x31e94" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e94")) () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" (identifier "FUN_00094cf0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }\n            else {\n              local_90 = 0;\n              local_9c = 0;\n            }" (if "if") (parenthesized_expression "((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0))" (( "(") (binary_expression "(uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)" (parenthesized_expression "(uVar12 == 0x85)" (( "(") (binary_expression "uVar12 == 0x85" (identifier "uVar12") (== "==") (number_literal "0x85")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_2 + 8) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 8) != 0" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              local_9c = piVar20[0xb] + 1;\n              local_90 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_90;\n              FUN_00049630(local_9c);\n              FUN_00049630(local_90);\n            }" ({ "{") (expression_statement "local_9c = piVar20[0xb] + 1;" (assignment_expression "local_9c = piVar20[0xb] + 1" (identifier "local_9c") (= "=") (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_90 = piVar20[0xb] + 2;" (assignment_expression "local_90 = piVar20[0xb] + 2" (identifier "local_90") (= "=") (binary_expression "piVar20[0xb] + 2" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar20[0xb] = local_90;" (assignment_expression "piVar20[0xb] = local_90" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_90")) (; ";")) (expression_statement "FUN_00049630(local_9c);" (call_expression "FUN_00049630(local_9c)" (identifier "FUN_00049630") (argument_list "(local_9c)" (( "(") (identifier "local_9c") () ")"))) (; ";")) (expression_statement "FUN_00049630(local_90);" (call_expression "FUN_00049630(local_90)" (identifier "FUN_00049630") (argument_list "(local_90)" (( "(") (identifier "local_90") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              local_90 = 0;\n              local_9c = 0;\n            }" (else "else") (compound_statement "{\n              local_90 = 0;\n              local_9c = 0;\n            }" ({ "{") (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_00053f30();\n            }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00053f30();\n            }" ({ "{") (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" (identifier "FUN_00053f30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" (identifier "param_2") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" (identifier "param_2") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" (identifier "param_2") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = 0xd;" (assignment_expression "local_58 = 0xd" (identifier "local_58") (= "=") (number_literal "0xd")) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = piVar20[0xb];" (assignment_expression "iVar15 = piVar20[0xb]" (identifier "iVar15") (= "=") (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,0xd);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,0xd)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,0xd)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,0xd)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "0xd") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = iVar15 + 2;" (assignment_expression "local_38 = iVar15 + 2" (identifier "local_38") (= "=") (binary_expression "iVar15 + 2" (identifier "iVar15") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_54 = iVar15 + 1;" (assignment_expression "local_54 = iVar15 + 1" (identifier "local_54") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[0xb] = iVar15 + 4;" (assignment_expression "piVar20[0xb] = iVar15 + 4" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "iVar15 + 4" (identifier "iVar15") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" (identifier "bVar7") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar13 = unaff_EBP + 0x31e87;" (assignment_expression "iVar13 = unaff_EBP + 0x31e87" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x31e87" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e87"))) (; ";")) (if_statement "if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }" (if "if") (parenthesized_expression "((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87))" (( "(") (binary_expression "(bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (parenthesized_expression "(bVar7 != 0x86)" (( "(") (binary_expression "bVar7 != 0x86" (identifier "bVar7") (!= "!=") (number_literal "0x86")) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (( "(") (comma_expression "iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87" (assignment_expression "iVar13 = unaff_EBP + 0x31e7d" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x31e7d" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e7d"))) (, ",") (binary_expression "bVar7 != 0x87" (identifier "bVar7") (!= "!=") (number_literal "0x87"))) () ")"))) () ")")) (compound_statement "{\n              iVar13 = unaff_EBP + 0x31e73;\n              if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }\n            }" ({ "{") (expression_statement "iVar13 = unaff_EBP + 0x31e73;" (assignment_expression "iVar13 = unaff_EBP + 0x31e73" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x31e73" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e73"))) (; ";")) (if_statement "if (bVar7 != 0x85) {\n                iVar13 = unaff_EBP + 0x31e8e;\n              }" (if "if") (parenthesized_expression "(bVar7 != 0x85)" (( "(") (binary_expression "bVar7 != 0x85" (identifier "bVar7") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                iVar13 = unaff_EBP + 0x31e8e;\n              }" ({ "{") (expression_statement "iVar13 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar13 = unaff_EBP + 0x31e8e" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x31e8e" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e8e"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32431,iVar13)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32431" (identifier "unaff_EBP") (+ "+") (number_literal "0x32431")) (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1)" (identifier "iVar18") (= "=") (call_expression "FUN_000493f0(0,piVar28[0x1a] + 1)" (identifier "FUN_000493f0") (argument_list "(0,piVar28[0x1a] + 1)" (( "(") (number_literal "0") (, ",") (binary_expression "piVar28[0x1a] + 1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(int *)(iVar29 + 8) = local_9c;" (assignment_expression "*(int *)(iVar29 + 8) = local_9c" (pointer_expression "*(int *)(iVar29 + 8)" (* "*") (cast_expression "(int *)(iVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 8)" (( "(") (binary_expression "iVar29 + 8" (identifier "iVar29") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "local_9c")) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x3243c)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x3243c" (identifier "unaff_EBP") (+ "+") (number_literal "0x3243c")) () ")"))) (; ";")) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar13 = piVar28[3];" (assignment_expression "iVar13 = piVar28[3]" (identifier "iVar13") (= "=") (subscript_expression "piVar28[3]" (identifier "piVar28") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(iVar13 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + 0x13) = 0" (pointer_expression "*(undefined1 *)(iVar13 + 0x13)" (* "*") (cast_expression "(undefined1 *)(iVar13 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x13)" (( "(") (binary_expression "iVar13 + 0x13" (identifier "iVar13") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x1c)" (( "(") (binary_expression "iVar13 + 0x1c" (identifier "iVar13") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar18 < 0) {\n              iVar18 = piVar28[0x1a] + -1;\n            }" (if "if") (parenthesized_expression "(iVar18 < 0)" (( "(") (binary_expression "iVar18 < 0" (identifier "iVar18") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              iVar18 = piVar28[0x1a] + -1;\n            }" ({ "{") (expression_statement "iVar18 = piVar28[0x1a] + -1;" (assignment_expression "iVar18 = piVar28[0x1a] + -1" (identifier "iVar18") (= "=") (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar13 = unaff_EBP + 0x67823;" (assignment_expression "iVar13 = unaff_EBP + 0x67823" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x67823" (identifier "unaff_EBP") (+ "+") (number_literal "0x67823"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }" (if "if") (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar28 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + 0x4d)" (( "(") (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar13 = piVar28[0x19] + iVar18 * 0x14;\n            }" ({ "{") (expression_statement "iVar13 = piVar28[0x19] + iVar18 * 0x14;" (assignment_expression "iVar13 = piVar28[0x19] + iVar18 * 0x14" (identifier "iVar13") (= "=") (binary_expression "piVar28[0x19] + iVar18 * 0x14" (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar18 * 0x14" (identifier "iVar18") (* "*") (number_literal "0x14")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar13 + 8) = piVar28[0x1a];" (assignment_expression "*(int *)(iVar13 + 8) = piVar28[0x1a]" (pointer_expression "*(int *)(iVar13 + 8)" (* "*") (cast_expression "(int *)(iVar13 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 8)" (( "(") (binary_expression "iVar13 + 8" (identifier "iVar13") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1)" (identifier "iVar18") (= "=") (call_expression "FUN_000493f0(0,piVar28[0x1a] + 1)" (identifier "FUN_000493f0") (argument_list "(0,piVar28[0x1a] + 1)" (( "(") (number_literal "0") (, ",") (binary_expression "piVar28[0x1a] + 1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 8);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 8)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar22 = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "uVar22 = *(undefined4 *)(param_2 + 0xc)" (identifier "uVar22") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_2 + 8) = local_90;" (assignment_expression "*(int *)(param_2 + 8) = local_90" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "local_90")) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32441)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32441)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32441" (identifier "unaff_EBP") (+ "+") (number_literal "0x32441")) () ")"))) (; ";")) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 8) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 8) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar13 = piVar28[3];" (assignment_expression "iVar13 = piVar28[3]" (identifier "iVar13") (= "=") (subscript_expression "piVar28[3]" (identifier "piVar28") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(iVar13 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + 0x13) = 0" (pointer_expression "*(undefined1 *)(iVar13 + 0x13)" (* "*") (cast_expression "(undefined1 *)(iVar13 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x13)" (( "(") (binary_expression "iVar13 + 0x13" (identifier "iVar13") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar13 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar13 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar13 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar13 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x1c)" (( "(") (binary_expression "iVar13 + 0x1c" (identifier "iVar13") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);" (assignment_expression "uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" (identifier "uVar16") (= "=") (call_expression "FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" (identifier "FUN_000684f0") (argument_list "(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_3") (, ",") (binary_expression "iVar15 + 3" (identifier "iVar15") (+ "+") (number_literal "3")) (, ",") (identifier "local_94") (, ",") (identifier "local_b0") (, ",") (identifier "iVar19") () ")")))) (; ";")) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar12 - 0x84 < 2) {\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }" (if "if") (parenthesized_expression "(uVar12 - 0x84 < 2)" (( "(") (binary_expression "uVar12 - 0x84 < 2" (binary_expression "uVar12 - 0x84" (identifier "uVar12") (- "-") (number_literal "0x84")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);\n            }" ({ "{") (expression_statement "local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19);" (assignment_expression "local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" (identifier "local_88") (= "=") (call_expression "FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" (identifier "FUN_000684f0") (argument_list "(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,\n                                      iVar19)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (identifier "param_3") (, ",") (binary_expression "iVar15 + 4" (identifier "iVar15") (+ "+") (number_literal "4")) (, ",") (identifier "local_94") (, ",") (identifier "local_b0") (, ",") (identifier "iVar19") () ")")))) (; ";")) (} "}"))) (if_statement "if ((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_00023410();\n            }" (if "if") (parenthesized_expression "((local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0))" (( "(") (binary_expression "(local_b0 != (int *)0x0) &&\n               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)" (parenthesized_expression "(local_b0 != (int *)0x0)" (( "(") (binary_expression "local_b0 != (int *)0x0" (identifier "local_b0") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)" (( "(") (comma_expression "iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "iVar15 = *local_b0" (identifier "iVar15") (= "=") (pointer_expression "*local_b0" (* "*") (identifier "local_b0"))) (, ",") (comma_expression "*local_b0 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "*local_b0 = iVar15 + -1" (pointer_expression "*local_b0" (* "*") (identifier "local_b0")) (= "=") (binary_expression "iVar15 + -1" (identifier "iVar15") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar15 + -1 == 0" (binary_expression "iVar15 + -1" (identifier "iVar15") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n              FUN_00023410();\n            }" ({ "{") (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" (identifier "FUN_00023410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar15 = iVar19;" (assignment_expression "iVar15 = iVar19" (identifier "iVar15") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "local_94 = iVar19;" (assignment_expression "local_94 = iVar19" (identifier "local_94") (= "=") (identifier "iVar19")) (; ";")) (if_statement "if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }" (if "if") (parenthesized_expression "(1 < uVar12 - 0x86)" (( "(") (binary_expression "1 < uVar12 - 0x86" (number_literal "1") (< "<") (binary_expression "uVar12 - 0x86" (identifier "uVar12") (- "-") (number_literal "0x86"))) () ")")) (compound_statement "{\n              iVar15 = FUN_00049630(local_88);\n              local_94 = FUN_00049630(iVar19);\n              FUN_00049630(iVar15);\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n            }" ({ "{") (expression_statement "iVar15 = FUN_00049630(local_88);" (assignment_expression "iVar15 = FUN_00049630(local_88)" (identifier "iVar15") (= "=") (call_expression "FUN_00049630(local_88)" (identifier "FUN_00049630") (argument_list "(local_88)" (( "(") (identifier "local_88") () ")")))) (; ";")) (expression_statement "local_94 = FUN_00049630(iVar19);" (assignment_expression "local_94 = FUN_00049630(iVar19)" (identifier "local_94") (= "=") (call_expression "FUN_00049630(iVar19)" (identifier "FUN_00049630") (argument_list "(iVar19)" (( "(") (identifier "iVar19") () ")")))) (; ";")) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" (identifier "FUN_00049630") (argument_list "(iVar15)" (( "(") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" (identifier "uVar8") (= "=") (call_expression "FUN_00024680()" (identifier "FUN_00024680") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" (* "*") (cast_expression "(undefined2 *)(param_2 + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (if_statement "if (uVar12 == 0x87) {\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }\n            else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" (if "if") (parenthesized_expression "(uVar12 == 0x87)" (( "(") (binary_expression "uVar12 == 0x87" (identifier "uVar12") (== "==") (number_literal "0x87")) () ")")) (compound_statement "{\n              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              local_b0 = (int *)iVar15;\n            }" ({ "{") (if_statement "if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }" (if "if") (parenthesized_expression "(*(short *)(iVar29 + 2) < *(short *)(param_2 + 2))" (( "(") (binary_expression "*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar29 + 2)" (* "*") (cast_expression "(short *)(iVar29 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 2)" (( "(") (binary_expression "iVar29 + 2" (identifier "iVar29") (+ "+") (number_literal "2")) () ")")))) (< "<") (pointer_expression "*(short *)(param_2 + 2)" (* "*") (cast_expression "(short *)(param_2 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")"))))) () ")")) (compound_statement "{\n                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);\n              }" ({ "{") (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar29 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar29 + 2)" (pointer_expression "*(short *)(param_2 + 2)" (* "*") (cast_expression "(short *)(param_2 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (pointer_expression "*(short *)(iVar29 + 2)" (* "*") (cast_expression "(short *)(iVar29 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 2)" (( "(") (binary_expression "iVar29 + 2" (identifier "iVar29") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_a8 = FUN_00049630(uVar16);" (assignment_expression "local_a8 = FUN_00049630(uVar16)" (identifier "local_a8") (= "=") (call_expression "FUN_00049630(uVar16)" (identifier "FUN_00049630") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")")))) (; ";")) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" (identifier "FUN_00049630") (argument_list "(iVar15)" (( "(") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" (identifier "FUN_00049630") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_b0 = (int *)iVar15;" (assignment_expression "local_b0 = (int *)iVar15" (identifier "local_b0") (= "=") (cast_expression "(int *)iVar15" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar15"))) (; ";")) (} "}")) (else_clause "else {\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" (else "else") (compound_statement "{\n              local_b0 = (int *)FUN_00049630(uVar16);\n              FUN_00049630(iVar19);\n              FUN_00049630(local_b0);\n              local_a8 = FUN_00049630(uVar16);\n              FUN_00049630(iVar15);\n              FUN_00049630(iVar11);\n              if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }\n            }" ({ "{") (expression_statement "local_b0 = (int *)FUN_00049630(uVar16);" (assignment_expression "local_b0 = (int *)FUN_00049630(uVar16)" (identifier "local_b0") (= "=") (cast_expression "(int *)FUN_00049630(uVar16)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00049630(uVar16)" (identifier "FUN_00049630") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")"))))) (; ";")) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" (identifier "FUN_00049630") (argument_list "(iVar19)" (( "(") (identifier "iVar19") () ")"))) (; ";")) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" (identifier "FUN_00049630") (argument_list "(local_b0)" (( "(") (identifier "local_b0") () ")"))) (; ";")) (expression_statement "local_a8 = FUN_00049630(uVar16);" (assignment_expression "local_a8 = FUN_00049630(uVar16)" (identifier "local_a8") (= "=") (call_expression "FUN_00049630(uVar16)" (identifier "FUN_00049630") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")")))) (; ";")) (expression_statement "FUN_00049630(iVar15);" (call_expression "FUN_00049630(iVar15)" (identifier "FUN_00049630") (argument_list "(iVar15)" (( "(") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" (identifier "FUN_00049630") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (if_statement "if (uVar12 != 0x85) {\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }" (if "if") (parenthesized_expression "(uVar12 != 0x85)" (( "(") (binary_expression "uVar12 != 0x85" (identifier "uVar12") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                local_a8 = FUN_00049630(iVar15);\n                FUN_00049630(iVar11);\n              }" ({ "{") (expression_statement "local_a8 = FUN_00049630(iVar15);" (assignment_expression "local_a8 = FUN_00049630(iVar15)" (identifier "local_a8") (= "=") (call_expression "FUN_00049630(iVar15)" (identifier "FUN_00049630") (argument_list "(iVar15)" (( "(") (identifier "iVar15") () ")")))) (; ";")) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" (identifier "FUN_00049630") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar19 = piVar28[0x1a];" (assignment_expression "iVar19 = piVar28[0x1a]" (identifier "iVar19") (= "=") (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (uVar12 - 0x84 < 2) {\n              FUN_00049630(local_88);\n            }" (if "if") (parenthesized_expression "(uVar12 - 0x84 < 2)" (( "(") (binary_expression "uVar12 - 0x84 < 2" (binary_expression "uVar12 - 0x84" (identifier "uVar12") (- "-") (number_literal "0x84")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n              FUN_00049630(local_88);\n            }" ({ "{") (expression_statement "FUN_00049630(local_88);" (call_expression "FUN_00049630(local_88)" (identifier "FUN_00049630") (argument_list "(local_88)" (( "(") (identifier "local_88") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" (identifier "FUN_00049630") (argument_list "(local_b0)" (( "(") (identifier "local_b0") () ")"))) (; ";")) (expression_statement "FUN_00049630(iVar11);" (call_expression "FUN_00049630(iVar11)" (identifier "FUN_00049630") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "iVar15 = piVar28[0x1a] + -1;" (assignment_expression "iVar15 = piVar28[0x1a] + -1" (identifier "iVar15") (= "=") (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < iVar18) {\n              iVar15 = iVar18;\n            }" (if "if") (parenthesized_expression "(-1 < iVar18)" (( "(") (binary_expression "-1 < iVar18" (number_literal "-1") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n              iVar15 = iVar18;\n            }" ({ "{") (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" (identifier "iVar15") (= "=") (identifier "iVar18")) (; ";")) (} "}"))) (expression_statement "iVar11 = unaff_EBP + 0x67823;" (assignment_expression "iVar11 = unaff_EBP + 0x67823" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x67823" (identifier "unaff_EBP") (+ "+") (number_literal "0x67823"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }" (if "if") (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar28 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + 0x4d)" (( "(") (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }" ({ "{") (expression_statement "iVar11 = piVar28[0x19] + iVar15 * 0x14;" (assignment_expression "iVar11 = piVar28[0x19] + iVar15 * 0x14" (identifier "iVar11") (= "=") (binary_expression "piVar28[0x19] + iVar15 * 0x14" (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar15 * 0x14" (identifier "iVar15") (* "*") (number_literal "0x14")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar11 + 8) = piVar28[0x1a];" (assignment_expression "*(int *)(iVar11 + 8) = piVar28[0x1a]" (pointer_expression "*(int *)(iVar11 + 8)" (* "*") (cast_expression "(int *)(iVar11 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "FUN_00049630(local_94);" (call_expression "FUN_00049630(local_94)" (identifier "FUN_00049630") (argument_list "(local_94)" (( "(") (identifier "local_94") () ")"))) (; ";")) (expression_statement "FUN_00049630(local_b0);" (call_expression "FUN_00049630(local_b0)" (identifier "FUN_00049630") (argument_list "(local_b0)" (( "(") (identifier "local_b0") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000436c0(0xfffffff1);" (call_expression "FUN_000436c0(0xfffffff1)" (identifier "FUN_000436c0") (argument_list "(0xfffffff1)" (( "(") (number_literal "0xfffffff1") () ")"))) (; ";")) (expression_statement "FUN_000493f0(local_30,iVar21);" (call_expression "FUN_000493f0(local_30,iVar21)" (identifier "FUN_000493f0") (argument_list "(local_30,iVar21)" (( "(") (identifier "local_30") (, ",") (identifier "iVar21") () ")"))) (; ";")) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" (identifier "FUN_000436c0") (argument_list "(0xfffffff7)" (( "(") (number_literal "0xfffffff7") () ")"))) (; ";")) (if_statement "if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }" (if "if") (parenthesized_expression "(0 < piVar28[0x1a])" (( "(") (binary_expression "0 < piVar28[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }" ({ "{") (expression_statement "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1" (pointer_expression "*(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" (* "*") (cast_expression "(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12)" (( "(") (binary_expression "piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12" (binary_expression "piVar28[0x19] + piVar28[0x1a] * 0x14" (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "piVar28[0x1a] * 0x14" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "FUN_000493f0(local_a8,iVar19);" (call_expression "FUN_000493f0(local_a8,iVar19)" (identifier "FUN_000493f0") (argument_list "(local_a8,iVar19)" (( "(") (identifier "local_a8") (, ",") (identifier "iVar19") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00053bb0();\n            }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x34) != 0" (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00053bb0();\n            }" ({ "{") (expression_statement "FUN_00053bb0();" (call_expression "FUN_00053bb0()" (identifier "FUN_00053bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_2 + 0x34) = iVar29;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar29" (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "iVar29")) (; ";")) (expression_statement "*(byte **)(iVar29 + 0x38) = param_2;" (assignment_expression "*(byte **)(iVar29 + 0x38) = param_2" (pointer_expression "*(byte **)(iVar29 + 0x38)" (* "*") (cast_expression "(byte **)(iVar29 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar29 + 0x38)" (( "(") (binary_expression "iVar29 + 0x38" (identifier "iVar29") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar19 = piVar20[0x36];" (assignment_expression "iVar19 = piVar20[0x36]" (identifier "iVar19") (= "=") (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar19 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              piVar28 = (int *)piVar20[2];\n              if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x67823;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }\n              iVar19 = *(int *)(iVar15 + 8);\n            }" ({ "{") (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" (identifier "piVar28") (= "=") (cast_expression "(int *)piVar20[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar20[2]" (identifier "piVar20") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (iVar19 < 0) {\n                iVar19 = piVar28[0x1a] + -1;\n              }" (if "if") (parenthesized_expression "(iVar19 < 0)" (( "(") (binary_expression "iVar19 < 0" (identifier "iVar19") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                iVar19 = piVar28[0x1a] + -1;\n              }" ({ "{") (expression_statement "iVar19 = piVar28[0x1a] + -1;" (assignment_expression "iVar19 = piVar28[0x1a] + -1" (identifier "iVar19") (= "=") (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar15 = unaff_EBP + 0x67823;" (assignment_expression "iVar15 = unaff_EBP + 0x67823" (identifier "iVar15") (= "=") (binary_expression "unaff_EBP + 0x67823" (identifier "unaff_EBP") (+ "+") (number_literal "0x67823"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }" (if "if") (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar28 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + 0x4d)" (( "(") (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                iVar15 = piVar28[0x19] + iVar19 * 0x14;\n              }" ({ "{") (expression_statement "iVar15 = piVar28[0x19] + iVar19 * 0x14;" (assignment_expression "iVar15 = piVar28[0x19] + iVar19 * 0x14" (identifier "iVar15") (= "=") (binary_expression "piVar28[0x19] + iVar19 * 0x14" (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar19 * 0x14" (identifier "iVar19") (* "*") (number_literal "0x14")))) (; ";")) (} "}"))) (expression_statement "iVar19 = *(int *)(iVar15 + 8);" (assignment_expression "iVar19 = *(int *)(iVar15 + 8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar15 + 8)" (* "*") (cast_expression "(int *)(iVar15 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 8)" (( "(") (binary_expression "iVar15 + 8" (identifier "iVar15") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "piVar20[0x36] = iVar19;" (assignment_expression "piVar20[0x36] = iVar19" (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "local_d0 = (byte *)(uint)(piVar20[9] != 0);" (assignment_expression "local_d0 = (byte *)(uint)(piVar20[9] != 0)" (identifier "local_d0") (= "=") (cast_expression "(byte *)(uint)(piVar20[9] != 0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(piVar20[9] != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar20[9] != 0)" (( "(") (binary_expression "piVar20[9] != 0" (subscript_expression "piVar20[9]" (identifier "piVar20") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (goto_statement "goto LAB_0009fe71;" (goto "goto") (statement_identifier "LAB_0009fe71") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar19 + 0x34) == 0) {\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar19 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(iVar19 + 0x34) == 0" (pointer_expression "*(int *)(iVar19 + 0x34)" (* "*") (cast_expression "(int *)(iVar19 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x34)" (( "(") (binary_expression "iVar19 + 0x34" (identifier "iVar19") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);\n            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);\n          }" ({ "{") (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32447)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32447)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32447" (identifier "unaff_EBP") (+ "+") (number_literal "0x32447")) () ")"))) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32456)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32456)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32456" (identifier "unaff_EBP") (+ "+") (number_literal "0x32456")) () ")"))) (; ";")) (} "}"))) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" (identifier "bVar7") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (bVar7 == 0x85) {\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }\n          else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" (if "if") (parenthesized_expression "(bVar7 == 0x85)" (( "(") (binary_expression "bVar7 == 0x85" (identifier "bVar7") (== "==") (number_literal "0x85")) () ")")) (compound_statement "{\n            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_0008d250();\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }\n          }" ({ "{") (expression_statement "*(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);" (assignment_expression "*(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8)" (pointer_expression "*(undefined4 *)(iVar19 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "*(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc)" (pointer_expression "*(undefined4 *)(iVar19 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0xc)" (( "(") (binary_expression "iVar19 + 0xc" (identifier "iVar19") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar19 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x3c)" (( "(") (binary_expression "iVar19 + 0x3c" (identifier "iVar19") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_0008d250()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" (identifier "param_2") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" (identifier "param_2") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" (identifier "param_2") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_d0 == (byte *)0x0) {\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }" (if "if") (parenthesized_expression "(local_d0 == (byte *)0x0)" (( "(") (binary_expression "local_d0 == (byte *)0x0" (identifier "local_d0") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              local_c4 = *(int *)(iVar19 + 8);\n              uVar16 = *(undefined4 *)(iVar19 + 0xc);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              *(int *)(param_2 + 8) = local_c4;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              uVar8 = FUN_00024680();\n              *(undefined2 *)(param_2 + 2) = uVar8;\n              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }\n              if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }\n              goto LAB_000a0ff8;\n            }" ({ "{") (expression_statement "local_c4 = *(int *)(iVar19 + 8);" (assignment_expression "local_c4 = *(int *)(iVar19 + 8)" (identifier "local_c4") (= "=") (pointer_expression "*(int *)(iVar19 + 8)" (* "*") (cast_expression "(int *)(iVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(iVar19 + 0xc);" (assignment_expression "uVar16 = *(undefined4 *)(iVar19 + 0xc)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(iVar19 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0xc)" (( "(") (binary_expression "iVar19 + 0xc" (identifier "iVar19") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" (identifier "param_2") ([ "[") (number_literal "0x34") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" (identifier "param_2") ([ "[") (number_literal "0x35") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" (identifier "param_2") ([ "[") (number_literal "0x36") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" (identifier "param_2") ([ "[") (number_literal "0x37") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_2 + 8) = local_c4;" (assignment_expression "*(int *)(param_2 + 8) = local_c4" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "local_c4")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (local_c4 != 0) {\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }" (if "if") (parenthesized_expression "(local_c4 != 0)" (( "(") (binary_expression "local_c4 != 0" (identifier "local_c4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar31 = FUN_00049630(0);\n                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);\n                local_c4 = (int)uVar31;\n                iVar29 = *(int *)(param_2 + 0xc);\n                if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }\n              }" ({ "{") (expression_statement "uVar31 = FUN_00049630(0);" (assignment_expression "uVar31 = FUN_00049630(0)" (identifier "uVar31") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);" (assignment_expression "uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20)" (identifier "uVar16") (= "=") (call_expression "(undefined4)((ulonglong)uVar31 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar31 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar31 >> 0x20" (cast_expression "(ulonglong)uVar31" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar31")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_c4 = (int)uVar31;" (assignment_expression "local_c4 = (int)uVar31" (identifier "local_c4") (= "=") (cast_expression "(int)uVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar31"))) (; ";")) (expression_statement "iVar29 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar29 = *(int *)(param_2 + 0xc)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar29 != 0) {\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }" (if "if") (parenthesized_expression "(iVar29 != 0)" (( "(") (binary_expression "iVar29 != 0" (identifier "iVar29") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);\n                }" ({ "{") (expression_statement "FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);" (call_expression "FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16)" (identifier "FUN_000493f0") (argument_list "(iVar29 + 1,iVar29,uVar16,uVar16)" (( "(") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1")) (, ",") (identifier "iVar29") (, ",") (identifier "uVar16") (, ",") (identifier "uVar16") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x31e73)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x31e73" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e73")) () ")"))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_0008d250()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" (identifier "local_c0") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" (identifier "uVar8") (= "=") (call_expression "FUN_00024680()" (identifier "FUN_00024680") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" (* "*") (cast_expression "(undefined2 *)(param_2 + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c))" (( "(") (binary_expression "((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&\n                 (0 < (int)local_3c)" (parenthesized_expression "((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0))" (( "(") (binary_expression "(*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)" (parenthesized_expression "(*(int *)(iVar19 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(iVar19 + 0x3c) != 0" (pointer_expression "*(int *)(iVar19 + 0x3c)" (* "*") (cast_expression "(int *)(iVar19 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x3c)" (( "(") (binary_expression "iVar19 + 0x3c" (identifier "iVar19") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar19 = FUN_00025130(), iVar19 != 0)" (( "(") (comma_expression "iVar19 = FUN_00025130(), iVar19 != 0" (assignment_expression "iVar19 = FUN_00025130()" (identifier "iVar19") (= "=") (call_expression "FUN_00025130()" (identifier "FUN_00025130") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(0 < (int)local_3c)" (( "(") (binary_expression "0 < (int)local_3c" (number_literal "0") (< "<") (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c"))) () ")"))) () ")")) (compound_statement "{\n                sVar9 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }\n              }" ({ "{") (expression_statement "sVar9 = *(short *)(param_2 + 2);" (assignment_expression "sVar9 = *(short *)(param_2 + 2)" (identifier "sVar9") (= "=") (pointer_expression "*(short *)(param_2 + 2)" (* "*") (cast_expression "(short *)(param_2 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar12 = (int)local_3c >> 0x1f;" (assignment_expression "uVar12 = (int)local_3c >> 0x1f" (identifier "uVar12") (= "=") (binary_expression "(int)local_3c >> 0x1f" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (>> ">>") (number_literal "0x1f"))) (; ";")) (if_statement "if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" (if "if") (parenthesized_expression "((int)local_3c < 8)" (( "(") (binary_expression "(int)local_3c < 8" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n                  if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }\n                }" ({ "{") (if_statement "if (local_3c == 1) {\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }\n                  else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" (if "if") (parenthesized_expression "(local_3c == 1)" (( "(") (binary_expression "local_3c == 1" (identifier "local_3c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                    if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }\n                  }" ({ "{") (if_statement "if (0 < sVar9) {\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }" (if "if") (parenthesized_expression "(0 < sVar9)" (( "(") (binary_expression "0 < sVar9" (number_literal "0") (< "<") (identifier "sVar9")) () ")")) (compound_statement "{\n                      sVar9 = 0;\n                      goto LAB_000a1cbb;\n                    }" ({ "{") (expression_statement "sVar9 = 0;" (assignment_expression "sVar9 = 0" (identifier "sVar9") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000a1cbb;" (goto "goto") (statement_identifier "LAB_000a1cbb") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" (else "else") (compound_statement "{\n                    uVar23 = local_3c;\n                    uVar27 = uVar12;\n                    sVar5 = 0x28;\n                    do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);\n                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }\n                  }" ({ "{") (expression_statement "uVar23 = local_3c;" (assignment_expression "uVar23 = local_3c" (identifier "uVar23") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "uVar27 = uVar12;" (assignment_expression "uVar27 = uVar12" (identifier "uVar27") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "sVar5 = 0x28;" (assignment_expression "sVar5 = 0x28" (identifier "sVar5") (= "=") (number_literal "0x28")) (; ";")) (do_statement "do {\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    } while (uVar4 < 8);" (do "do") (compound_statement "{\n                      sVar24 = sVar5;\n                      uVar4 = uVar23 * 2;\n                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;\n                      uVar27 = 0;\n                      uVar23 = uVar4;\n                      sVar5 = sVar24 + -10;\n                    }" ({ "{") (expression_statement "sVar24 = sVar5;" (assignment_expression "sVar24 = sVar5" (identifier "sVar24") (= "=") (identifier "sVar5")) (; ";")) (expression_statement "uVar4 = uVar23 * 2;" (assignment_expression "uVar4 = uVar23 * 2" (identifier "uVar4") (= "=") (binary_expression "uVar23 * 2" (identifier "uVar23") (* "*") (number_literal "2"))) (; ";")) (if_statement "if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;" (if "if") (parenthesized_expression "((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0)" (( "(") (binary_expression "(uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0" (binary_expression "(uVar27 & 0x7fffffff) != 0" (parenthesized_expression "(uVar27 & 0x7fffffff)" (( "(") (binary_expression "uVar27 & 0x7fffffff" (identifier "uVar27") (& "&") (number_literal "0x7fffffff")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(int)uVar23 < 0" (cast_expression "(int)uVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar23")) (< "<") (number_literal "0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar23 = uVar4;" (assignment_expression "uVar23 = uVar4" (identifier "uVar23") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "sVar5 = sVar24 + -10;" (assignment_expression "sVar5 = sVar24 + -10" (identifier "sVar5") (= "=") (binary_expression "sVar24 + -10" (identifier "sVar24") (+ "+") (number_literal "-10"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < 8)" (( "(") (binary_expression "uVar4 < 8" (identifier "uVar4") (< "<") (number_literal "8")) () ")")) (; ";")) (if_statement "if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9) {\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" (if "if") (parenthesized_expression "((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9)" (( "(") (binary_expression "(short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))\n                        < sVar9" (cast_expression "(short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))" (( "(") (binary_expression "sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" (binary_expression "sVar24 + -0x14" (identifier "sVar24") (+ "+") (number_literal "-0x14")) (+ "+") (pointer_expression "*(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" (* "*") (cast_expression "(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2)" (( "(") (binary_expression "unaff_EBP + 0x38a1f + (uVar4 & 7) * 2" (binary_expression "unaff_EBP + 0x38a1f" (identifier "unaff_EBP") (+ "+") (number_literal "0x38a1f")) (+ "+") (binary_expression "(uVar4 & 7) * 2" (parenthesized_expression "(uVar4 & 7)" (( "(") (binary_expression "uVar4 & 7" (identifier "uVar4") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) () ")"))))) () ")"))) (< "<") (identifier "sVar9")) () ")")) (compound_statement "{\n                      sVar9 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_000a1ca8;\n                    }" ({ "{") (expression_statement "sVar9 = 0x28;" (assignment_expression "sVar9 = 0x28" (identifier "sVar9") (= "=") (number_literal "0x28")) (; ";")) (expression_statement "local_bc = local_3c;" (assignment_expression "local_bc = local_3c" (identifier "local_bc") (= "=") (identifier "local_3c")) (; ";")) (do_statement "do {\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);" (do "do") (compound_statement "{\n                        sVar9 = sVar9 + -10;\n                        bVar30 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar30 != 0) break;\n                        uVar12 = 0;\n                      }" ({ "{") (expression_statement "sVar9 = sVar9 + -10;" (assignment_expression "sVar9 = sVar9 + -10" (identifier "sVar9") (= "=") (binary_expression "sVar9 + -10" (identifier "sVar9") (+ "+") (number_literal "-10"))) (; ";")) (expression_statement "bVar30 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar30 = CARRY4(local_bc,local_bc)" (identifier "bVar30") (= "=") (call_expression "CARRY4(local_bc,local_bc)" (identifier "CARRY4") (argument_list "(local_bc,local_bc)" (( "(") (identifier "local_bc") (, ",") (identifier "local_bc") () ")")))) (; ";")) (expression_statement "local_bc = local_bc * 2;" (assignment_expression "local_bc = local_bc * 2" (identifier "local_bc") (= "=") (binary_expression "local_bc * 2" (identifier "local_bc") (* "*") (number_literal "2"))) (; ";")) (if_statement "if (uVar12 * 2 + (uint)bVar30 != 0) break;" (if "if") (parenthesized_expression "(uVar12 * 2 + (uint)bVar30 != 0)" (( "(") (binary_expression "uVar12 * 2 + (uint)bVar30 != 0" (binary_expression "uVar12 * 2 + (uint)bVar30" (binary_expression "uVar12 * 2" (identifier "uVar12") (* "*") (number_literal "2")) (+ "+") (cast_expression "(uint)bVar30" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar30"))) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_bc < 8)" (( "(") (binary_expression "local_bc < 8" (identifier "local_bc") (< "<") (number_literal "8")) () ")")) (; ";")) (goto_statement "goto LAB_000a1ca8;" (goto "goto") (statement_identifier "LAB_000a1ca8") (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" (else "else") (compound_statement "{\n                  if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }\n                  uVar27 = 0x3c - uVar27;\n                  bVar7 = (byte)uVar27 & 0x1f;\n                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                  if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }\n                  if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }\n                }" ({ "{") (if_statement "if ((int)local_3c < 0) {\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }\n                  else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" (if "if") (parenthesized_expression "((int)local_3c < 0)" (( "(") (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar27 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = uVar27 ^ 0x1f;\n                  }" ({ "{") (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" (identifier "uVar27") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" (if "if") (parenthesized_expression "((int)local_3c < 0)" (( "(") (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" ({ "{") (for_statement "for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }" (for "for") (( "(") (; ";") (binary_expression "uVar12 >> uVar27 == 0" (binary_expression "uVar12 >> uVar27" (identifier "uVar12") (>> ">>") (identifier "uVar27")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" (identifier "uVar27") (= "=") (binary_expression "uVar27 ^ 0x1f" (identifier "uVar27") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" (else "else") (compound_statement "{\n                    uVar27 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }\n                    uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                  }" ({ "{") (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" (identifier "uVar27") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (local_3c != 0) {\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }\n                    }" ({ "{") (for_statement "for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                      }" (for "for") (( "(") (; ";") (binary_expression "local_3c >> uVar27 == 0" (binary_expression "local_3c >> uVar27" (identifier "local_3c") (>> ">>") (identifier "uVar27")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" (identifier "uVar27") (= "=") (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" (( "(") (binary_expression "uVar27 ^ 0x1f" (identifier "uVar27") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" (identifier "uVar27") (= "=") (binary_expression "0x3c - uVar27" (number_literal "0x3c") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "bVar7 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar7 = (byte)uVar27 & 0x1f" (identifier "bVar7") (= "=") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;" (assignment_expression "uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (identifier "uVar23") (= "=") (binary_expression "local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (binary_expression "local_3c >> bVar7" (identifier "local_3c") (>> ">>") (identifier "bVar7")) (| "|") (binary_expression "uVar12 << 0x20 - bVar7" (identifier "uVar12") (<< "<<") (binary_expression "0x20 - bVar7" (number_literal "0x20") (- "-") (identifier "bVar7"))))) (; ";")) (if_statement "if ((uVar27 & 0x20) != 0) {\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }" (if "if") (parenthesized_expression "((uVar27 & 0x20) != 0)" (( "(") (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" (( "(") (binary_expression "uVar27 & 0x20" (identifier "uVar27") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);\n                  }" ({ "{") (expression_statement "uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar23 = uVar12 >> ((byte)uVar27 & 0x1f)" (identifier "uVar23") (= "=") (binary_expression "uVar12 >> ((byte)uVar27 & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (if_statement "if ((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }" (if "if") (parenthesized_expression "((short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9)" (( "(") (binary_expression "(short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9" (cast_expression "(short)((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2))" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "((short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2))" (( "(") (binary_expression "(short)uVar27 * 10 + 0x1e +\n                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" (binary_expression "(short)uVar27 * 10 + 0x1e" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar27")) (* "*") (number_literal "10")) (+ "+") (number_literal "0x1e")) (+ "+") (pointer_expression "*(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" (* "*") (cast_expression "(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)" (( "(") (binary_expression "unaff_EBP + 0x38a1f + (uVar23 & 7) * 2" (binary_expression "unaff_EBP + 0x38a1f" (identifier "unaff_EBP") (+ "+") (number_literal "0x38a1f")) (+ "+") (binary_expression "(uVar23 & 7) * 2" (parenthesized_expression "(uVar23 & 7)" (( "(") (binary_expression "uVar23 & 7" (identifier "uVar23") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) () ")"))))) () ")"))) (< "<") (identifier "sVar9")) () ")")) (compound_statement "{\n                    if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }\n                    uVar27 = 0x3c - uVar27;\n                    sVar9 = (short)uVar27 * 10 + 0x28;\n                    bVar7 = (byte)uVar27 & 0x1f;\n                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;\n                    if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }\nLAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);\n                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);\nLAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;\n                  }" ({ "{") (if_statement "if ((int)local_3c < 0) {\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }\n                    else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" (if "if") (parenthesized_expression "((int)local_3c < 0)" (( "(") (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                      uVar27 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = uVar27 ^ 0x1f;\n                    }" ({ "{") (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" (identifier "uVar27") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" (if "if") (parenthesized_expression "((int)local_3c < 0)" (( "(") (binary_expression "(int)local_3c < 0" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" ({ "{") (for_statement "for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }" (for "for") (( "(") (; ";") (binary_expression "uVar12 >> uVar27 == 0" (binary_expression "uVar12 >> uVar27" (identifier "uVar12") (>> ">>") (identifier "uVar27")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                        }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar27 = uVar27 ^ 0x1f;" (assignment_expression "uVar27 = uVar27 ^ 0x1f" (identifier "uVar27") (= "=") (binary_expression "uVar27 ^ 0x1f" (identifier "uVar27") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" (else "else") (compound_statement "{\n                      uVar27 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }\n                      uVar27 = (uVar27 ^ 0x1f) + 0x20;\n                    }" ({ "{") (expression_statement "uVar27 = 0x1f;" (assignment_expression "uVar27 = 0x1f" (identifier "uVar27") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (local_3c != 0) {\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }\n                      }" ({ "{") (for_statement "for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {\n                        }" (for "for") (( "(") (; ";") (binary_expression "local_3c >> uVar27 == 0" (binary_expression "local_3c >> uVar27" (identifier "local_3c") (>> ">>") (identifier "uVar27")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar27 = uVar27 - 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 - 1" (identifier "uVar27") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                        }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar27 = (uVar27 ^ 0x1f) + 0x20;" (assignment_expression "uVar27 = (uVar27 ^ 0x1f) + 0x20" (identifier "uVar27") (= "=") (binary_expression "(uVar27 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar27 ^ 0x1f)" (( "(") (binary_expression "uVar27 ^ 0x1f" (identifier "uVar27") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "uVar27 = 0x3c - uVar27;" (assignment_expression "uVar27 = 0x3c - uVar27" (identifier "uVar27") (= "=") (binary_expression "0x3c - uVar27" (number_literal "0x3c") (- "-") (identifier "uVar27"))) (; ";")) (expression_statement "sVar9 = (short)uVar27 * 10 + 0x28;" (assignment_expression "sVar9 = (short)uVar27 * 10 + 0x28" (identifier "sVar9") (= "=") (binary_expression "(short)uVar27 * 10 + 0x28" (binary_expression "(short)uVar27 * 10" (cast_expression "(short)uVar27" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar27")) (* "*") (number_literal "10")) (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "bVar7 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar7 = (byte)uVar27 & 0x1f" (identifier "bVar7") (= "=") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;" (assignment_expression "local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (identifier "local_bc") (= "=") (binary_expression "local_3c >> bVar7 | uVar12 << 0x20 - bVar7" (binary_expression "local_3c >> bVar7" (identifier "local_3c") (>> ">>") (identifier "bVar7")) (| "|") (binary_expression "uVar12 << 0x20 - bVar7" (identifier "uVar12") (<< "<<") (binary_expression "0x20 - bVar7" (number_literal "0x20") (- "-") (identifier "bVar7"))))) (; ";")) (if_statement "if ((uVar27 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }" (if "if") (parenthesized_expression "((uVar27 & 0x20) != 0)" (( "(") (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" (( "(") (binary_expression "uVar27 & 0x20" (identifier "uVar27") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);\n                    }" ({ "{") (expression_statement "local_bc = uVar12 >> ((byte)uVar27 & 0x1f);" (assignment_expression "local_bc = uVar12 >> ((byte)uVar27 & 0x1f)" (identifier "local_bc") (= "=") (binary_expression "uVar12 >> ((byte)uVar27 & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_000a1ca8:\n                    local_b0 = (int *)(unaff_EBP + 0x38a1f);" (statement_identifier "LAB_000a1ca8") (: ":") (expression_statement "local_b0 = (int *)(unaff_EBP + 0x38a1f);" (assignment_expression "local_b0 = (int *)(unaff_EBP + 0x38a1f)" (identifier "local_b0") (= "=") (cast_expression "(int *)(unaff_EBP + 0x38a1f)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x38a1f)" (( "(") (binary_expression "unaff_EBP + 0x38a1f" (identifier "unaff_EBP") (+ "+") (number_literal "0x38a1f")) () ")")))) (; ";"))) (expression_statement "sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);" (assignment_expression "sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2)" (identifier "sVar9") (= "=") (binary_expression "sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2)" (binary_expression "sVar9 + -10" (identifier "sVar9") (+ "+") (number_literal "-10")) (+ "+") (pointer_expression "*(short *)((int)local_b0 + (local_bc & 7) * 2)" (* "*") (cast_expression "(short *)((int)local_b0 + (local_bc & 7) * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_b0 + (local_bc & 7) * 2)" (( "(") (binary_expression "(int)local_b0 + (local_bc & 7) * 2" (cast_expression "(int)local_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b0")) (+ "+") (binary_expression "(local_bc & 7) * 2" (parenthesized_expression "(local_bc & 7)" (( "(") (binary_expression "local_bc & 7" (identifier "local_bc") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) () ")")))))) (; ";")) (labeled_statement "LAB_000a1cbb:\n                    *(short *)(param_2 + 2) = sVar9;" (statement_identifier "LAB_000a1cbb") (: ":") (expression_statement "*(short *)(param_2 + 2) = sVar9;" (assignment_expression "*(short *)(param_2 + 2) = sVar9" (pointer_expression "*(short *)(param_2 + 2)" (* "*") (cast_expression "(short *)(param_2 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "sVar9")) (; ";"))) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (local_c4 != 0) {\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }" (if "if") (parenthesized_expression "(local_c4 != 0)" (( "(") (binary_expression "local_c4 != 0" (identifier "local_c4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar19 = local_c8[0x1a] + -1;\n                if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }\n                iVar29 = unaff_EBP + 0x67823;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar29 + 8) = local_c8[0x1a];\n              }" ({ "{") (expression_statement "iVar19 = local_c8[0x1a] + -1;" (assignment_expression "iVar19 = local_c8[0x1a] + -1" (identifier "iVar19") (= "=") (binary_expression "local_c8[0x1a] + -1" (subscript_expression "local_c8[0x1a]" (identifier "local_c8") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < local_c4) {\n                  iVar19 = local_c4;\n                }" (if "if") (parenthesized_expression "(-1 < local_c4)" (( "(") (binary_expression "-1 < local_c4" (number_literal "-1") (< "<") (identifier "local_c4")) () ")")) (compound_statement "{\n                  iVar19 = local_c4;\n                }" ({ "{") (expression_statement "iVar19 = local_c4;" (assignment_expression "iVar19 = local_c4" (identifier "iVar19") (= "=") (identifier "local_c4")) (; ";")) (} "}"))) (expression_statement "iVar29 = unaff_EBP + 0x67823;" (assignment_expression "iVar29 = unaff_EBP + 0x67823" (identifier "iVar29") (= "=") (binary_expression "unaff_EBP + 0x67823" (identifier "unaff_EBP") (+ "+") (number_literal "0x67823"))) (; ";")) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }" (if "if") (parenthesized_expression "(*(char *)(*local_c8 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*local_c8 + 0x4d) == '\0'" (pointer_expression "*(char *)(*local_c8 + 0x4d)" (* "*") (cast_expression "(char *)(*local_c8 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_c8 + 0x4d)" (( "(") (binary_expression "*local_c8 + 0x4d" (pointer_expression "*local_c8" (* "*") (identifier "local_c8")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  iVar29 = iVar19 * 0x14 + local_c8[0x19];\n                }" ({ "{") (expression_statement "iVar29 = iVar19 * 0x14 + local_c8[0x19];" (assignment_expression "iVar29 = iVar19 * 0x14 + local_c8[0x19]" (identifier "iVar29") (= "=") (binary_expression "iVar19 * 0x14 + local_c8[0x19]" (binary_expression "iVar19 * 0x14" (identifier "iVar19") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "local_c8[0x19]" (identifier "local_c8") ([ "[") (number_literal "0x19") (] "]")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar29 + 8) = local_c8[0x1a];" (assignment_expression "*(int *)(iVar29 + 8) = local_c8[0x1a]" (pointer_expression "*(int *)(iVar29 + 8)" (* "*") (cast_expression "(int *)(iVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 8)" (( "(") (binary_expression "iVar29 + 8" (identifier "iVar29") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "local_c8[0x1a]" (identifier "local_c8") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000a0ff8;" (goto "goto") (statement_identifier "LAB_000a0ff8") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" (else "else") (compound_statement "{\n            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }\n            iVar29 = piVar20[10];\n            piVar20[10] = iVar29 + 2;\n            uVar16 = FUN_00049630(0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar3 = param_2;\n            do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);\n            puVar2 = (uint *)(pbVar26 + 4);\n            *puVar2 = *puVar2 | 0x20;\n            local_3c = CONCAT31(local_3c._1_3_,1);\n            local_34 = 0;\n            local_28 = 0;\n            local_30 = 0;\n            local_2c = 0;\n            local_38 = iVar29;\n            local_d0 = (byte *)FUN_0008d250();\n            if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }\n          }" ({ "{") (if_statement "if ((bVar7 == 0x86) || (bVar7 == 0x84)) {\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" (if "if") (parenthesized_expression "((bVar7 == 0x86) || (bVar7 == 0x84))" (( "(") (binary_expression "(bVar7 == 0x86) || (bVar7 == 0x84)" (parenthesized_expression "(bVar7 == 0x86)" (( "(") (binary_expression "bVar7 == 0x86" (identifier "bVar7") (== "==") (number_literal "0x86")) () ")")) (|| "||") (parenthesized_expression "(bVar7 == 0x84)" (( "(") (binary_expression "bVar7 == 0x84" (identifier "bVar7") (== "==") (number_literal "0x84")) () ")"))) () ")")) (compound_statement "{\n              local_38 = local_70;\n              if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,1);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              local_d0 = (byte *)FUN_0008d250();\n              if (local_d0 != (byte *)0x0) goto LAB_000a0696;\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              param_2[8] = 0;\n              param_2[9] = 0;\n              param_2[10] = 0;\n              param_2[0xb] = 0;\n              param_2[0xc] = 0;\n              param_2[0xd] = 0;\n              param_2[0xe] = 0;\n              param_2[0xf] = 0;\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }\nLAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }\n              if (piVar20[9] == 0) goto LAB_000a0282;\n              goto LAB_000a028c;\n            }" ({ "{") (expression_statement "local_38 = local_70;" (assignment_expression "local_38 = local_70" (identifier "local_38") (= "=") (identifier "local_70")) (; ";")) (if_statement "if ((char)local_74 != '\x01') {\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }" (if "if") (parenthesized_expression "((char)local_74 != '\x01')" (( "(") (binary_expression "(char)local_74 != '\x01'" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n                iVar29 = piVar20[10];\n                piVar20[10] = iVar29 + 1;\n                uVar16 = FUN_00049630(0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar3 = param_2;\n                do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n                local_38 = iVar29;\n              }" ({ "{") (expression_statement "iVar29 = piVar20[10];" (assignment_expression "iVar29 = piVar20[10]" (identifier "iVar29") (= "=") (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar20[10] = iVar29 + 1;" (assignment_expression "piVar20[10] = iVar29 + 1" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = FUN_00049630(0);" (assignment_expression "uVar16 = FUN_00049630(0)" (identifier "uVar16") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "pbVar3 = param_2;" (assignment_expression "pbVar3 = param_2" (identifier "pbVar3") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar3 != (byte *)0x0);" (do "do") (compound_statement "{\n                  pbVar26 = pbVar3;\n                  pbVar3 = *(byte **)(pbVar26 + 0x38);\n                }" ({ "{") (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" (identifier "pbVar26") (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "pbVar3 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar3 = *(byte **)(pbVar26 + 0x38)" (identifier "pbVar3") (= "=") (pointer_expression "*(byte **)(pbVar26 + 0x38)" (* "*") (cast_expression "(byte **)(pbVar26 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar26 + 0x38)" (( "(") (binary_expression "pbVar26 + 0x38" (identifier "pbVar26") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar3 != (byte *)0x0)" (( "(") (binary_expression "pbVar3 != (byte *)0x0" (identifier "pbVar3") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar2 = (uint *)(pbVar26 + 4);" (assignment_expression "puVar2 = (uint *)(pbVar26 + 4)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(pbVar26 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "*puVar2 = *puVar2 | 0x20;" (assignment_expression "*puVar2 = *puVar2 | 0x20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (binary_expression "*puVar2 | 0x20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "local_38 = iVar29;" (assignment_expression "local_38 = iVar29" (identifier "local_38") (= "=") (identifier "iVar29")) (; ";")) (} "}"))) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,1)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,1)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_0008d250()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (local_d0 != (byte *)0x0) goto LAB_000a0696;" (if "if") (parenthesized_expression "(local_d0 != (byte *)0x0)" (( "(") (binary_expression "local_d0 != (byte *)0x0" (identifier "local_d0") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000a0696;" (goto "goto") (statement_identifier "LAB_000a0696") (; ";"))) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" (identifier "bVar7") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" (identifier "param_2") ([ "[") (number_literal "0x34") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" (identifier "param_2") ([ "[") (number_literal "0x35") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" (identifier "param_2") ([ "[") (number_literal "0x36") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" (identifier "param_2") ([ "[") (number_literal "0x37") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" (identifier "param_2") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" (identifier "param_2") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" (identifier "param_2") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar7 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(bVar7 == 0x86)" (( "(") (binary_expression "bVar7 == 0x86" (identifier "bVar7") (== "==") (number_literal "0x86")) () ")")) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar29 = unaff_EBP + 0x31e87;\n              }" ({ "{") (expression_statement "local_3c = CONCAT31(local_3c._1_3_,2);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,2)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,2)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,2)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "iVar29 = unaff_EBP + 0x31e87;" (assignment_expression "iVar29 = unaff_EBP + 0x31e87" (identifier "iVar29") (= "=") (binary_expression "unaff_EBP + 0x31e87" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e87"))) (; ";")) (} "}")) (else_clause "else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" (else "else") (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar29 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }\n              }" ({ "{") (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,1)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,1)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar29 = unaff_EBP + 0x31e73;" (assignment_expression "iVar29 = unaff_EBP + 0x31e73" (identifier "iVar29") (= "=") (binary_expression "unaff_EBP + 0x31e73" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e73"))) (; ";")) (if_statement "if (bVar7 != 0x85) {\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }" (if "if") (parenthesized_expression "(bVar7 != 0x85)" (( "(") (binary_expression "bVar7 != 0x85" (identifier "bVar7") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                  iVar29 = unaff_EBP + 0x31e7d;\n                  if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }\n                }" ({ "{") (expression_statement "iVar29 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar29 = unaff_EBP + 0x31e7d" (identifier "iVar29") (= "=") (binary_expression "unaff_EBP + 0x31e7d" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e7d"))) (; ";")) (if_statement "if (bVar7 != 0x87) {\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }" (if "if") (parenthesized_expression "(bVar7 != 0x87)" (( "(") (binary_expression "bVar7 != 0x87" (identifier "bVar7") (!= "!=") (number_literal "0x87")) () ")")) (compound_statement "{\n                    iVar29 = unaff_EBP + 0x31e8e;\n                  }" ({ "{") (expression_statement "iVar29 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar29 = unaff_EBP + 0x31e8e" (identifier "iVar29") (= "=") (binary_expression "unaff_EBP + 0x31e8e" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e8e"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32469,iVar29)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32469" (identifier "unaff_EBP") (+ "+") (number_literal "0x32469")) (, ",") (identifier "iVar29") () ")"))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_0008d250()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" (identifier "local_c0") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" (identifier "param_2") ([ "[") (number_literal "0x30") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" (identifier "param_2") ([ "[") (number_literal "0x31") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" (identifier "param_2") ([ "[") (number_literal "0x32") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" (identifier "param_2") ([ "[") (number_literal "0x33") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (if_statement "if (*param_2 == 0x84) {\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }" (if "if") (parenthesized_expression "(*param_2 == 0x84)" (( "(") (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "0x84")) () ")")) (compound_statement "{\n                uVar8 = FUN_00024680();\n                *(undefined2 *)(param_2 + 2) = uVar8;\n              }" ({ "{") (expression_statement "uVar8 = FUN_00024680();" (assignment_expression "uVar8 = FUN_00024680()" (identifier "uVar8") (= "=") (call_expression "FUN_00024680()" (identifier "FUN_00024680") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar8;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar8" (pointer_expression "*(undefined2 *)(param_2 + 2)" (* "*") (cast_expression "(undefined2 *)(param_2 + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_00053f30();\n              }" ({ "{") (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" (identifier "FUN_00053f30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }" (if "if") (parenthesized_expression "(((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0'))" (( "(") (binary_expression "((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')" (parenthesized_expression "((char)local_74 != '\x01')" (( "(") (binary_expression "(char)local_74 != '\x01'" (cast_expression "(char)local_74" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_74")) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar15 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar15 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar15 + 0x4d)" (* "*") (cast_expression "(char *)(iVar15 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0x4d)" (( "(") (binary_expression "iVar15 + 0x4d" (identifier "iVar15") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                iVar19 = piVar20[0xe] + -1;\n                iVar21 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar21;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                iVar29 = local_c8[0x1a];\n                FUN_000964a0(0,0,&local_74,iVar21,iVar19);\n                FUN_000330b0();\n                FUN_00049630(iVar29);\n                FUN_000330b0();\nLAB_000a16d1:\n                FUN_00049630(0);\n              }" ({ "{") (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" (identifier "iVar19") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar21 = piVar20[0xe] + -2;" (assignment_expression "iVar21 = piVar20[0xe] + -2" (identifier "iVar21") (= "=") (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar20[0xe] = iVar21;" (assignment_expression "piVar20[0xe] = iVar21" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" (identifier "FUN_00094cf0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" (identifier "FUN_00049630") (argument_list "(iVar19)" (( "(") (identifier "iVar19") () ")"))) (; ";")) (expression_statement "iVar29 = local_c8[0x1a];" (assignment_expression "iVar29 = local_c8[0x1a]" (identifier "iVar29") (= "=") (subscript_expression "local_c8[0x1a]" (identifier "local_c8") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "FUN_000964a0(0,0,&local_74,iVar21,iVar19);" (call_expression "FUN_000964a0(0,0,&local_74,iVar21,iVar19)" (identifier "FUN_000964a0") (argument_list "(0,0,&local_74,iVar21,iVar19)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "iVar21") (, ",") (identifier "iVar19") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(iVar29);" (call_expression "FUN_00049630(iVar29)" (identifier "FUN_00049630") (argument_list "(iVar29)" (( "(") (identifier "iVar29") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000a16d1:\n                FUN_00049630(0);" (statement_identifier "LAB_000a16d1") (: ":") (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_000a0ff8:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" (statement_identifier "LAB_000a0ff8") (: ":") (if_statement "if (*(int *)(param_2 + 0x38) == 0) {\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x38) == 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x38) == 0" (pointer_expression "*(int *)(param_2 + 0x38)" (* "*") (cast_expression "(int *)(param_2 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar19 = piVar20[0x36];\n                if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }\n                piVar20[0x36] = iVar19;\n              }" ({ "{") (expression_statement "iVar19 = piVar20[0x36];" (assignment_expression "iVar19 = piVar20[0x36]" (identifier "iVar19") (= "=") (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar19 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }\n                  iVar29 = unaff_EBP + 0x67823;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }\n                  iVar19 = *(int *)(iVar29 + 8);\n                }" ({ "{") (expression_statement "piVar28 = (int *)piVar20[2];" (assignment_expression "piVar28 = (int *)piVar20[2]" (identifier "piVar28") (= "=") (cast_expression "(int *)piVar20[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar20[2]" (identifier "piVar20") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (iVar19 < 0) {\n                    iVar19 = piVar28[0x1a] + -1;\n                  }" (if "if") (parenthesized_expression "(iVar19 < 0)" (( "(") (binary_expression "iVar19 < 0" (identifier "iVar19") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar19 = piVar28[0x1a] + -1;\n                  }" ({ "{") (expression_statement "iVar19 = piVar28[0x1a] + -1;" (assignment_expression "iVar19 = piVar28[0x1a] + -1" (identifier "iVar19") (= "=") (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar29 = unaff_EBP + 0x67823;" (assignment_expression "iVar29 = unaff_EBP + 0x67823" (identifier "iVar29") (= "=") (binary_expression "unaff_EBP + 0x67823" (identifier "unaff_EBP") (+ "+") (number_literal "0x67823"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }" (if "if") (parenthesized_expression "(*(char *)(*piVar28 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar28 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar28 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar28 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + 0x4d)" (( "(") (binary_expression "*piVar28 + 0x4d" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    iVar29 = iVar19 * 0x14 + piVar28[0x19];\n                  }" ({ "{") (expression_statement "iVar29 = iVar19 * 0x14 + piVar28[0x19];" (assignment_expression "iVar29 = iVar19 * 0x14 + piVar28[0x19]" (identifier "iVar29") (= "=") (binary_expression "iVar19 * 0x14 + piVar28[0x19]" (binary_expression "iVar19 * 0x14" (identifier "iVar19") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")))) (; ";")) (} "}"))) (expression_statement "iVar19 = *(int *)(iVar29 + 8);" (assignment_expression "iVar19 = *(int *)(iVar29 + 8)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar29 + 8)" (* "*") (cast_expression "(int *)(iVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar29 + 8)" (( "(") (binary_expression "iVar29 + 8" (identifier "iVar29") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "piVar20[0x36] = iVar19;" (assignment_expression "piVar20[0x36] = iVar19" (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (} "}")))) (if_statement "if (piVar20[9] == 0) goto LAB_000a0282;" (if "if") (parenthesized_expression "(piVar20[9] == 0)" (( "(") (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" (identifier "piVar20") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a0282;" (goto "goto") (statement_identifier "LAB_000a0282") (; ";"))) (goto_statement "goto LAB_000a028c;" (goto "goto") (statement_identifier "LAB_000a028c") (; ";")) (} "}"))) (expression_statement "iVar29 = piVar20[10];" (assignment_expression "iVar29 = piVar20[10]" (identifier "iVar29") (= "=") (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar20[10] = iVar29 + 2;" (assignment_expression "piVar20[10] = iVar29 + 2" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar29 + 2" (identifier "iVar29") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar16 = FUN_00049630(0);" (assignment_expression "uVar16 = FUN_00049630(0)" (identifier "uVar16") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "pbVar3 = param_2;" (assignment_expression "pbVar3 = param_2" (identifier "pbVar3") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar3 != (byte *)0x0);" (do "do") (compound_statement "{\n              pbVar26 = pbVar3;\n              pbVar3 = *(byte **)(pbVar26 + 0x38);\n            }" ({ "{") (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" (identifier "pbVar26") (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "pbVar3 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar3 = *(byte **)(pbVar26 + 0x38)" (identifier "pbVar3") (= "=") (pointer_expression "*(byte **)(pbVar26 + 0x38)" (* "*") (cast_expression "(byte **)(pbVar26 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar26 + 0x38)" (( "(") (binary_expression "pbVar26 + 0x38" (identifier "pbVar26") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar3 != (byte *)0x0)" (( "(") (binary_expression "pbVar3 != (byte *)0x0" (identifier "pbVar3") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar2 = (uint *)(pbVar26 + 4);" (assignment_expression "puVar2 = (uint *)(pbVar26 + 4)" (identifier "puVar2") (= "=") (cast_expression "(uint *)(pbVar26 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "*puVar2 = *puVar2 | 0x20;" (assignment_expression "*puVar2 = *puVar2 | 0x20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (binary_expression "*puVar2 | 0x20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,1);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,1)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,1)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,1)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = iVar29;" (assignment_expression "local_38 = iVar29" (identifier "local_38") (= "=") (identifier "iVar29")) (; ";")) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_0008d250()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (local_d0 == (byte *)0x0) {\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" (if "if") (parenthesized_expression "(local_d0 == (byte *)0x0)" (( "(") (binary_expression "local_d0 == (byte *)0x0" (identifier "local_d0") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              uVar22 = FUN_00049630(0);\n              bVar7 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar22;\n              param_2[0x34] = 0;\n              param_2[0x35] = 0;\n              param_2[0x36] = 0;\n              param_2[0x37] = 0;\n              param_2[0x3c] = 0;\n              param_2[0x3d] = 0;\n              param_2[0x3e] = 0;\n              param_2[0x3f] = 0;\n              iVar21 = unaff_EBP + 0x31e87;\n              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }\n              local_38 = iVar29 + 1;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);\n              local_d0 = (byte *)FUN_0008d250();\n              local_c0 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar19;\n              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }\n              goto LAB_000a0ff8;\n            }" ({ "{") (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" (identifier "uVar22") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar7 = *param_2;" (assignment_expression "bVar7 = *param_2" (identifier "bVar7") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x18) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0x18) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" (identifier "param_2") ([ "[") (number_literal "0x34") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" (identifier "param_2") ([ "[") (number_literal "0x35") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" (identifier "param_2") ([ "[") (number_literal "0x36") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" (identifier "param_2") ([ "[") (number_literal "0x37") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" (identifier "param_2") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" (identifier "param_2") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" (identifier "param_2") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar21 = unaff_EBP + 0x31e87;" (assignment_expression "iVar21 = unaff_EBP + 0x31e87" (identifier "iVar21") (= "=") (binary_expression "unaff_EBP + 0x31e87" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e87"))) (; ";")) (if_statement "if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }" (if "if") (parenthesized_expression "((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87))" (( "(") (binary_expression "(bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (parenthesized_expression "(bVar7 != 0x86)" (( "(") (binary_expression "bVar7 != 0x86" (identifier "bVar7") (!= "!=") (number_literal "0x86")) () ")")) (&& "&&") (parenthesized_expression "(iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)" (( "(") (comma_expression "iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87" (assignment_expression "iVar21 = unaff_EBP + 0x31e7d" (identifier "iVar21") (= "=") (binary_expression "unaff_EBP + 0x31e7d" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e7d"))) (, ",") (binary_expression "bVar7 != 0x87" (identifier "bVar7") (!= "!=") (number_literal "0x87"))) () ")"))) () ")")) (compound_statement "{\n                iVar21 = unaff_EBP + 0x31e73;\n                if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }\n              }" ({ "{") (expression_statement "iVar21 = unaff_EBP + 0x31e73;" (assignment_expression "iVar21 = unaff_EBP + 0x31e73" (identifier "iVar21") (= "=") (binary_expression "unaff_EBP + 0x31e73" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e73"))) (; ";")) (if_statement "if (bVar7 != 0x85) {\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }" (if "if") (parenthesized_expression "(bVar7 != 0x85)" (( "(") (binary_expression "bVar7 != 0x85" (identifier "bVar7") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                  iVar21 = unaff_EBP + 0x31e8e;\n                }" ({ "{") (expression_statement "iVar21 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar21 = unaff_EBP + 0x31e8e" (identifier "iVar21") (= "=") (binary_expression "unaff_EBP + 0x31e8e" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e8e"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_38 = iVar29 + 1;" (assignment_expression "local_38 = iVar29 + 1" (identifier "local_38") (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32469,iVar21)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32469" (identifier "unaff_EBP") (+ "+") (number_literal "0x32469")) (, ",") (identifier "iVar21") () ")"))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_0008d250();" (assignment_expression "local_d0 = (byte *)FUN_0008d250()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_0008d250()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_c0 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c0 = *(int *)(param_2 + 0x34)" (identifier "local_c0") (= "=") (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_2 + 0x34) = iVar19;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar19" (pointer_expression "*(int *)(param_2 + 0x34)" (* "*") (cast_expression "(int *)(param_2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (if_statement "if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }" (if "if") (parenthesized_expression "(*(short *)(iVar19 + 2) < *(short *)(param_2 + 2))" (( "(") (binary_expression "*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar19 + 2)" (* "*") (cast_expression "(short *)(iVar19 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 2)" (( "(") (binary_expression "iVar19 + 2" (identifier "iVar19") (+ "+") (number_literal "2")) () ")")))) (< "<") (pointer_expression "*(short *)(param_2 + 2)" (* "*") (cast_expression "(short *)(param_2 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")"))))) () ")")) (compound_statement "{\n                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);\n              }" ({ "{") (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar19 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar19 + 2)" (pointer_expression "*(short *)(param_2 + 2)" (* "*") (cast_expression "(short *)(param_2 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (= "=") (pointer_expression "*(short *)(iVar19 + 2)" (* "*") (cast_expression "(short *)(iVar19 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 2)" (( "(") (binary_expression "iVar19 + 2" (identifier "iVar19") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_00053f30();\n              }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x3c) != 0" (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_00053f30();\n              }" ({ "{") (expression_statement "FUN_00053f30();" (call_expression "FUN_00053f30()" (identifier "FUN_00053f30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (local_d0 == (byte *)0x0) {\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }" (if "if") (parenthesized_expression "(local_d0 == (byte *)0x0)" (( "(") (binary_expression "local_d0 == (byte *)0x0" (identifier "local_d0") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                iVar19 = piVar20[0xe] + -1;\n                iVar29 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar29;\n                FUN_00094cf0();\n                FUN_00049630(iVar19);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }\n                uVar16 = FUN_00049630(iVar21);\n                FUN_00068470(iVar29,iVar21,0);\n                if (iVar21 != 0) {\n                  FUN_000254e0();\n                }\n                FUN_000964a0(0,0,&local_74,iVar29,iVar19);\n                FUN_000330b0();\n                FUN_00049630(uVar16);\n                FUN_000330b0();\n                FUN_00049630(0);\n                goto LAB_000a16d1;\n              }" ({ "{") (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" (identifier "iVar19") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar29 = piVar20[0xe] + -2;" (assignment_expression "iVar29 = piVar20[0xe] + -2" (identifier "iVar29") (= "=") (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar20[0xe] = iVar29;" (assignment_expression "piVar20[0xe] = iVar29" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar29")) (; ";")) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" (identifier "FUN_00094cf0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" (identifier "FUN_00049630") (argument_list "(iVar19)" (( "(") (identifier "iVar19") () ")"))) (; ";")) (if_statement "if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }\n                else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" (if "if") (parenthesized_expression "(*(char *)((int)piVar20 + 0x13) == '\0')" (( "(") (binary_expression "*(char *)((int)piVar20 + 0x13) == '\0'" (pointer_expression "*(char *)((int)piVar20 + 0x13)" (* "*") (cast_expression "(char *)((int)piVar20 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar20 + 0x13)" (( "(") (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (+ "+") (number_literal "0x13")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  iVar21 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar21;\n                }" ({ "{") (expression_statement "iVar21 = piVar20[0xb] + 1;" (assignment_expression "iVar21 = piVar20[0xb] + 1" (identifier "iVar21") (= "=") (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar20[0xb] = iVar21;" (assignment_expression "piVar20[0xb] = iVar21" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (} "}")) (else_clause "else {\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" (else "else") (compound_statement "{\n                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar7;\n                  iVar21 = piVar20[bVar7 + 0x26];\n                }" ({ "{") (expression_statement "bVar7 = *(char *)((int)piVar20 + 0x13) - 1;" (assignment_expression "bVar7 = *(char *)((int)piVar20 + 0x13) - 1" (identifier "bVar7") (= "=") (binary_expression "*(char *)((int)piVar20 + 0x13) - 1" (pointer_expression "*(char *)((int)piVar20 + 0x13)" (* "*") (cast_expression "(char *)((int)piVar20 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar20 + 0x13)" (( "(") (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (+ "+") (number_literal "0x13")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)((int)piVar20 + 0x13) = bVar7;" (assignment_expression "*(byte *)((int)piVar20 + 0x13) = bVar7" (pointer_expression "*(byte *)((int)piVar20 + 0x13)" (* "*") (cast_expression "(byte *)((int)piVar20 + 0x13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar20 + 0x13)" (( "(") (binary_expression "(int)piVar20 + 0x13" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (+ "+") (number_literal "0x13")) () ")")))) (= "=") (identifier "bVar7")) (; ";")) (expression_statement "iVar21 = piVar20[bVar7 + 0x26];" (assignment_expression "iVar21 = piVar20[bVar7 + 0x26]" (identifier "iVar21") (= "=") (subscript_expression "piVar20[bVar7 + 0x26]" (identifier "piVar20") ([ "[") (binary_expression "bVar7 + 0x26" (identifier "bVar7") (+ "+") (number_literal "0x26")) (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar16 = FUN_00049630(iVar21);" (assignment_expression "uVar16 = FUN_00049630(iVar21)" (identifier "uVar16") (= "=") (call_expression "FUN_00049630(iVar21)" (identifier "FUN_00049630") (argument_list "(iVar21)" (( "(") (identifier "iVar21") () ")")))) (; ";")) (expression_statement "FUN_00068470(iVar29,iVar21,0);" (call_expression "FUN_00068470(iVar29,iVar21,0)" (identifier "FUN_00068470") (argument_list "(iVar29,iVar21,0)" (( "(") (identifier "iVar29") (, ",") (identifier "iVar21") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (iVar21 != 0) {\n                  FUN_000254e0();\n                }" (if "if") (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (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_000964a0(0,0,&local_74,iVar29,iVar19);" (call_expression "FUN_000964a0(0,0,&local_74,iVar29,iVar19)" (identifier "FUN_000964a0") (argument_list "(0,0,&local_74,iVar29,iVar19)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "iVar29") (, ",") (identifier "iVar19") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(uVar16);" (call_expression "FUN_00049630(uVar16)" (identifier "FUN_00049630") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_000a16d1;" (goto "goto") (statement_identifier "LAB_000a16d1") (; ";")) (} "}"))) (goto_statement "goto LAB_000a0ff8;" (goto "goto") (statement_identifier "LAB_000a0ff8") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000a0696:\n          param_3[3] = local_68;" (statement_identifier "LAB_000a0696") (: ":") (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_68")) (; ";"))) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_64")) (; ";")) (goto_statement "goto LAB_0009fe71;" (goto "goto") (statement_identifier "LAB_0009fe71") (; ";")) (} "}"))) (expression_statement "piVar28 = *(int **)(param_2 + 0x20);" (assignment_expression "piVar28 = *(int **)(param_2 + 0x20)" (identifier "piVar28") (= "=") (pointer_expression "*(int **)(param_2 + 0x20)" (* "*") (cast_expression "(int **)(param_2 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_c0 = **(undefined4 **)(param_2 + 0x1c);" (assignment_expression "local_c0 = **(undefined4 **)(param_2 + 0x1c)" (identifier "local_c0") (= "=") (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" (* "*") (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (expression_statement "local_d0 = *(byte **)(param_2 + 0x34);" (assignment_expression "local_d0 = *(byte **)(param_2 + 0x34)" (identifier "local_d0") (= "=") (pointer_expression "*(byte **)(param_2 + 0x34)" (* "*") (cast_expression "(byte **)(param_2 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x44) == 0) {\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x44) == 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x44) == 0" (pointer_expression "*(int *)(param_2 + 0x44)" (* "*") (cast_expression "(int *)(param_2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);\n          if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }" ({ "{") (labeled_statement "LAB_000a035e:\n          iVar19 = FUN_0003d5a0(0,0);" (statement_identifier "LAB_000a035e") (: ":") (expression_statement "iVar19 = FUN_0003d5a0(0,0);" (assignment_expression "iVar19 = FUN_0003d5a0(0,0)" (identifier "iVar19") (= "=") (call_expression "FUN_0003d5a0(0,0)" (identifier "FUN_0003d5a0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";"))) (if_statement "if (iVar19 == 0) {\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar13 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar13;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_00094cf0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar19 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar29 = *(int *)(param_2 + 8);\n            param_2[8] = 0;\n            param_2[9] = 0;\n            param_2[10] = 0;\n            param_2[0xb] = 0;\n            iVar21 = *(int *)(param_2 + 0xc);\n            param_2[0xc] = 0;\n            param_2[0xd] = 0;\n            param_2[0xe] = 0;\n            param_2[0xf] = 0;\n            piVar14 = *(int **)(param_2 + 0x30);\n            iVar11 = extraout_EDX;\n            if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar19 = piVar20[0xb] + 1;\n            if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" ({ "{") (expression_statement "iVar13 = piVar20[0xe] + -1;" (assignment_expression "iVar13 = piVar20[0xe] + -1" (identifier "iVar13") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar20[0xe] = iVar13;" (assignment_expression "piVar20[0xe] = iVar13" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "param_2[2] = 0x40;" (assignment_expression "param_2[2] = 0x40" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x40")) (; ";")) (expression_statement "param_2[3] = 1;" (assignment_expression "param_2[3] = 1" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00094cf0();" (call_expression "FUN_00094cf0()" (identifier "FUN_00094cf0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "uVar16 = *(undefined4 *)(param_2 + 0x3c)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "iVar19 = *piVar28;" (assignment_expression "iVar19 = *piVar28" (identifier "iVar19") (= "=") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) (; ";")) (expression_statement "param_2[0x3c] = 0;" (assignment_expression "param_2[0x3c] = 0" (subscript_expression "param_2[0x3c]" (identifier "param_2") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3d] = 0;" (assignment_expression "param_2[0x3d] = 0" (subscript_expression "param_2[0x3d]" (identifier "param_2") ([ "[") (number_literal "0x3d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3e] = 0;" (assignment_expression "param_2[0x3e] = 0" (subscript_expression "param_2[0x3e]" (identifier "param_2") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x3f] = 0;" (assignment_expression "param_2[0x3f] = 0" (subscript_expression "param_2[0x3f]" (identifier "param_2") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar29 = *(int *)(param_2 + 8);" (assignment_expression "iVar29 = *(int *)(param_2 + 8)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "param_2[8] = 0;" (assignment_expression "param_2[8] = 0" (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[9] = 0;" (assignment_expression "param_2[9] = 0" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[10] = 0;" (assignment_expression "param_2[10] = 0" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xb] = 0;" (assignment_expression "param_2[0xb] = 0" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar21 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar21 = *(int *)(param_2 + 0xc)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(param_2 + 0xc)" (* "*") (cast_expression "(int *)(param_2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "param_2[0xc] = 0;" (assignment_expression "param_2[0xc] = 0" (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xd] = 0;" (assignment_expression "param_2[0xd] = 0" (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xe] = 0;" (assignment_expression "param_2[0xe] = 0" (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0xf] = 0;" (assignment_expression "param_2[0xf] = 0" (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar14 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar14 = *(int **)(param_2 + 0x30)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "iVar11 = extraout_EDX;" (assignment_expression "iVar11 = extraout_EDX" (identifier "iVar11") (= "=") (identifier "extraout_EDX")) (; ";")) (if_statement "if (0 < iVar19) {\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }" (if "if") (parenthesized_expression "(0 < iVar19)" (( "(") (binary_expression "0 < iVar19" (number_literal "0") (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n              iVar18 = 0;\n              bVar7 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }\n            }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar7 = *(byte *)((int)piVar28 + 0x2d);" (assignment_expression "bVar7 = *(byte *)((int)piVar28 + 0x2d)" (identifier "bVar7") (= "=") (pointer_expression "*(byte *)((int)piVar28 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar28 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar28 + 0x2d)" (( "(") (binary_expression "(int)piVar28 + 0x2d" (cast_expression "(int)piVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar28")) (+ "+") (number_literal "0x2d")) () ")"))))) (; ";")) (while_statement "while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }" (while "while") (parenthesized_expression "(((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19)))" (( "(") (parenthesized_expression "((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))" (( "(") (binary_expression "(bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19)" (binary_expression "(bVar7 & 0x20) == 0" (parenthesized_expression "(bVar7 & 0x20)" (( "(") (binary_expression "bVar7 & 0x20" (identifier "bVar7") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar18 = iVar18 + 1, iVar18 != iVar19)" (( "(") (comma_expression "iVar18 = iVar18 + 1, iVar18 != iVar19" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar18 != iVar19" (identifier "iVar18") (!= "!=") (identifier "iVar19"))) () ")"))) () ")")) () ")")) (compound_statement "{\n                iVar11 = iVar18 * 0x44;\n                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);\n              }" ({ "{") (expression_statement "iVar11 = iVar18 * 0x44;" (assignment_expression "iVar11 = iVar18 * 0x44" (identifier "iVar11") (= "=") (binary_expression "iVar18 * 0x44" (identifier "iVar18") (* "*") (number_literal "0x44"))) (; ";")) (expression_statement "bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);" (assignment_expression "bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d)" (identifier "bVar7") (= "=") (pointer_expression "*(byte *)((int)piVar28 + iVar11 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar28 + iVar11 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar28 + iVar11 + 0x2d)" (( "(") (binary_expression "(int)piVar28 + iVar11 + 0x2d" (binary_expression "(int)piVar28 + iVar11" (cast_expression "(int)piVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar28")) (+ "+") (identifier "iVar11")) (+ "+") (number_literal "0x2d")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_38 = piVar20[10];" (assignment_expression "local_38 = piVar20[10]" (identifier "local_38") (= "=") (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "local_bc = local_38 + 1;" (assignment_expression "local_bc = local_38 + 1" (identifier "local_bc") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar20[10] = local_bc;" (assignment_expression "piVar20[10] = local_bc" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_bc")) (; ";")) (expression_statement "iVar19 = piVar20[0xb] + 1;" (assignment_expression "iVar19 = piVar20[0xb] + 1" (identifier "iVar19") (= "=") (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*param_2 == 0x84) {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }\n            else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" (if "if") (parenthesized_expression "(*param_2 == 0x84)" (( "(") (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "0x84")) () ")")) (compound_statement "{\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,6);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              piVar20[10] = local_38 + 2;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\nLAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }\n            }" ({ "{") (if_statement "if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,8);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                piVar20[10] = local_38 + 2;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);\n                goto LAB_000a049c;\n              }" ({ "{") (expression_statement "local_3c = CONCAT31(local_3c._1_3_,8);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,8)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,8)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,8)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "8") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[10] = local_38 + 2;" (assignment_expression "piVar20[10] = local_38 + 2" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "local_38 + 2" (identifier "local_38") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "FUN_000493f0(iVar19,local_c0,iVar11,iVar11);" (call_expression "FUN_000493f0(iVar19,local_c0,iVar11,iVar11)" (identifier "FUN_000493f0") (argument_list "(iVar19,local_c0,iVar11,iVar11)" (( "(") (identifier "iVar19") (, ",") (identifier "local_c0") (, ",") (identifier "iVar11") (, ",") (identifier "iVar11") () ")"))) (; ";")) (goto_statement "goto LAB_000a049c;" (goto "goto") (statement_identifier "LAB_000a049c") (; ";")) (} "}"))) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,6);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,6)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,6)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,6)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "6") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[10] = local_38 + 2;" (assignment_expression "piVar20[10] = local_38 + 2" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "local_38 + 2" (identifier "local_38") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "FUN_000493f0(iVar19,local_c0,piVar20,piVar20);" (call_expression "FUN_000493f0(iVar19,local_c0,piVar20,piVar20)" (identifier "FUN_000493f0") (argument_list "(iVar19,local_c0,piVar20,piVar20)" (( "(") (identifier "iVar19") (, ",") (identifier "local_c0") (, ",") (identifier "piVar20") (, ",") (identifier "piVar20") () ")"))) (; ";")) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" (identifier "FUN_00049630") (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")"))) (; ";")) (labeled_statement "LAB_000a04f4:\n              if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" (statement_identifier "LAB_000a04f4") (: ":") (if_statement "if (local_bc != 0) {\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" (if "if") (parenthesized_expression "(local_bc != 0)" (( "(") (binary_expression "local_bc != 0" (identifier "local_bc") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar22 = FUN_00049630(0);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar22;\n              }" ({ "{") (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" (identifier "uVar22") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;" (assignment_expression "*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20" (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(uint *)(param_2 + 4) | 0x20" (pointer_expression "*(uint *)(param_2 + 4)" (* "*") (cast_expression "(uint *)(param_2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x14) = uVar22;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar22" (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar22")) (; ";")) (} "}")))) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" (identifier "param_2") ([ "[") (number_literal "0x30") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" (identifier "param_2") ([ "[") (number_literal "0x31") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" (identifier "param_2") ([ "[") (number_literal "0x32") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" (identifier "param_2") ([ "[") (number_literal "0x33") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x38] = 0;" (assignment_expression "local_d0[0x38] = 0" (subscript_expression "local_d0[0x38]" (identifier "local_d0") ([ "[") (number_literal "0x38") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x39] = 0;" (assignment_expression "local_d0[0x39] = 0" (subscript_expression "local_d0[0x39]" (identifier "local_d0") ([ "[") (number_literal "0x39") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x3a] = 0;" (assignment_expression "local_d0[0x3a] = 0" (subscript_expression "local_d0[0x3a]" (identifier "local_d0") ([ "[") (number_literal "0x3a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x3b] = 0;" (assignment_expression "local_d0[0x3b] = 0" (subscript_expression "local_d0[0x3b]" (identifier "local_d0") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x3241c)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x3241c" (identifier "unaff_EBP") (+ "+") (number_literal "0x3241c")) () ")"))) (; ";")) (expression_statement "iVar11 = FUN_0008d250();" (assignment_expression "iVar11 = FUN_0008d250()" (identifier "iVar11") (= "=") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(byte **)(local_d0 + 0x38) = param_2;" (assignment_expression "*(byte **)(local_d0 + 0x38) = param_2" (pointer_expression "*(byte **)(local_d0 + 0x38)" (* "*") (cast_expression "(byte **)(local_d0 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 0x38)" (( "(") (binary_expression "local_d0 + 0x38" (identifier "local_d0") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_c0 = FUN_00049630(iVar13);\n                uVar22 = FUN_00049630(0);\n                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;\n                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);\nLAB_000a191e:\n                uVar22 = FUN_00049630(0);\n                iVar19 = piVar20[0xe] + -1;\n                piVar20[0xe] = iVar19;\n                if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }\n                FUN_000964a0(0,0,&local_74,iVar19,iVar13);\n                if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }\n                uVar22 = FUN_000330b0();\n                if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }\n                FUN_00049630(local_c0);\n                FUN_000330b0();\n              }" ({ "{") (expression_statement "local_c0 = FUN_00049630(iVar13);" (assignment_expression "local_c0 = FUN_00049630(iVar13)" (identifier "local_c0") (= "=") (call_expression "FUN_00049630(iVar13)" (identifier "FUN_00049630") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (; ";")) (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" (identifier "uVar22") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (piVar14 == (int *)0x0) goto LAB_000a1b0c;" (if "if") (parenthesized_expression "(piVar14 == (int *)0x0)" (( "(") (binary_expression "piVar14 == (int *)0x0" (identifier "piVar14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000a1b0c;" (goto "goto") (statement_identifier "LAB_000a1b0c") (; ";"))) (expression_statement "FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);" (call_expression "FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22)" (identifier "FUN_000493f0") (argument_list "(*piVar14 + 1,iVar19,uVar22,uVar22)" (( "(") (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "1")) (, ",") (identifier "iVar19") (, ",") (identifier "uVar22") (, ",") (identifier "uVar22") () ")"))) (; ";")) (labeled_statement "LAB_000a191e:\n                uVar22 = FUN_00049630(0);" (statement_identifier "LAB_000a191e") (: ":") (expression_statement "uVar22 = FUN_00049630(0);" (assignment_expression "uVar22 = FUN_00049630(0)" (identifier "uVar22") (= "=") (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";"))) (expression_statement "iVar19 = piVar20[0xe] + -1;" (assignment_expression "iVar19 = piVar20[0xe] + -1" (identifier "iVar19") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar20[0xe] = iVar19;" (assignment_expression "piVar20[0xe] = iVar19" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (if_statement "if (0 < iVar21) {\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }" (if "if") (parenthesized_expression "(0 < iVar21)" (( "(") (binary_expression "0 < iVar21" (number_literal "0") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n                  FUN_000493f0(iVar19,1,uVar22,uVar22);\n                }" ({ "{") (expression_statement "FUN_000493f0(iVar19,1,uVar22,uVar22);" (call_expression "FUN_000493f0(iVar19,1,uVar22,uVar22)" (identifier "FUN_000493f0") (argument_list "(iVar19,1,uVar22,uVar22)" (( "(") (identifier "iVar19") (, ",") (number_literal "1") (, ",") (identifier "uVar22") (, ",") (identifier "uVar22") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000964a0(0,0,&local_74,iVar19,iVar13);" (call_expression "FUN_000964a0(0,0,&local_74,iVar19,iVar13)" (identifier "FUN_000964a0") (argument_list "(0,0,&local_74,iVar19,iVar13)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "iVar19") (, ",") (identifier "iVar13") () ")"))) (; ";")) (if_statement "if (iVar29 != 0) {\n                  FUN_00049630(iVar13);\n                }" (if "if") (parenthesized_expression "(iVar29 != 0)" (( "(") (binary_expression "iVar29 != 0" (identifier "iVar29") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00049630(iVar13);\n                }" ({ "{") (expression_statement "FUN_00049630(iVar13);" (call_expression "FUN_00049630(iVar13)" (identifier "FUN_00049630") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar22 = FUN_000330b0();" (assignment_expression "uVar22 = FUN_000330b0()" (identifier "uVar22") (= "=") (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((param_2[4] & 8) == 0) {\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }\n                else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" (if "if") (parenthesized_expression "((param_2[4] & 8) == 0)" (( "(") (binary_expression "(param_2[4] & 8) == 0" (parenthesized_expression "(param_2[4] & 8)" (( "(") (binary_expression "param_2[4] & 8" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  param_2[0x34] = 0;\n                  param_2[0x35] = 0;\n                  param_2[0x36] = 0;\n                  param_2[0x37] = 0;\n                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);\n                  FUN_0008d250();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                }" ({ "{") (expression_statement "param_2[0x34] = 0;" (assignment_expression "param_2[0x34] = 0" (subscript_expression "param_2[0x34]" (identifier "param_2") ([ "[") (number_literal "0x34") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x35] = 0;" (assignment_expression "param_2[0x35] = 0" (subscript_expression "param_2[0x35]" (identifier "param_2") ([ "[") (number_literal "0x35") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x36] = 0;" (assignment_expression "param_2[0x36] = 0" (subscript_expression "param_2[0x36]" (identifier "param_2") ([ "[") (number_literal "0x36") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x37] = 0;" (assignment_expression "param_2[0x37] = 0" (subscript_expression "param_2[0x37]" (identifier "param_2") ([ "[") (number_literal "0x37") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x32422,uVar22)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x32422" (identifier "unaff_EBP") (+ "+") (number_literal "0x32422")) (, ",") (identifier "uVar22") () ")"))) (; ";")) (expression_statement "FUN_0008d250();" (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(byte **)(param_2 + 0x34) = local_d0;" (assignment_expression "*(byte **)(param_2 + 0x34) = local_d0" (pointer_expression "*(byte **)(param_2 + 0x34)" (* "*") (cast_expression "(byte **)(param_2 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "local_d0")) (; ";")) (} "}")) (else_clause "else {\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" (else "else") (compound_statement "{\n                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);\n                }" ({ "{") (expression_statement "FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);" (call_expression "FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22)" (identifier "FUN_0003d470") (argument_list "(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22)" (( "(") (identifier "piVar20") (, ",") (binary_expression "&UNK_00034dc7 + unaff_EBP" (pointer_expression "&UNK_00034dc7" (& "&") (identifier "UNK_00034dc7")) (+ "+") (identifier "unaff_EBP")) (, ",") (identifier "uVar22") (, ",") (identifier "uVar22") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" (identifier "FUN_00049630") (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")"))) (; ";")) (expression_statement "FUN_000330b0();" (call_expression "FUN_000330b0()" (identifier "FUN_000330b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" (else "else") (compound_statement "{\n              if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }\n              local_3c = CONCAT31(local_3c._1_3_,5);\n              local_34 = 0;\n              local_28 = 0;\n              local_30 = 0;\n              local_2c = 0;\n              piVar20[0xb] = iVar19;\n              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);\n              FUN_00049630(local_c0);\n              param_2[0x30] = 0;\n              param_2[0x31] = 0;\n              param_2[0x32] = 0;\n              param_2[0x33] = 0;\n              local_d0[0x38] = 0;\n              local_d0[0x39] = 0;\n              local_d0[0x3a] = 0;\n              local_d0[0x3b] = 0;\n              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);\n              iVar11 = FUN_0008d250();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }\n            }" ({ "{") (if_statement "if (piVar14 != (int *)0x0) {\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,7);\n                local_34 = 0;\n                local_28 = 0;\n                local_30 = 0;\n                local_2c = 0;\n                piVar20[0xb] = iVar19;\n                FUN_000493f0(iVar19,local_c0);\n                local_bc = 0;\nLAB_000a049c:\n                FUN_00050020();\n                FUN_00049630(*piVar14 + 2);\n                FUN_000436c0(0xfffffff7);\n                local_24 = piVar14;\n                goto LAB_000a04f4;\n              }" ({ "{") (expression_statement "local_3c = CONCAT31(local_3c._1_3_,7);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,7)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,7)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,7)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "7") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "FUN_000493f0(iVar19,local_c0);" (call_expression "FUN_000493f0(iVar19,local_c0)" (identifier "FUN_000493f0") (argument_list "(iVar19,local_c0)" (( "(") (identifier "iVar19") (, ",") (identifier "local_c0") () ")"))) (; ";")) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000a049c:\n                FUN_00050020();" (statement_identifier "LAB_000a049c") (: ":") (expression_statement "FUN_00050020();" (call_expression "FUN_00050020()" (identifier "FUN_00050020") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "FUN_00049630(*piVar14 + 2);" (call_expression "FUN_00049630(*piVar14 + 2)" (identifier "FUN_00049630") (argument_list "(*piVar14 + 2)" (( "(") (binary_expression "*piVar14 + 2" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" (identifier "FUN_000436c0") (argument_list "(0xfffffff7)" (( "(") (number_literal "0xfffffff7") () ")"))) (; ";")) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" (identifier "local_24") (= "=") (identifier "piVar14")) (; ";")) (goto_statement "goto LAB_000a04f4;" (goto "goto") (statement_identifier "LAB_000a04f4") (; ";")) (} "}"))) (expression_statement "local_3c = CONCAT31(local_3c._1_3_,5);" (assignment_expression "local_3c = CONCAT31(local_3c._1_3_,5)" (identifier "local_3c") (= "=") (call_expression "CONCAT31(local_3c._1_3_,5)" (identifier "CONCAT31") (argument_list "(local_3c._1_3_,5)" (( "(") (field_expression "local_3c._1_3_" (identifier "local_3c") (. ".") (field_identifier "_1_3_")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar20[0xb] = iVar19;" (assignment_expression "piVar20[0xb] = iVar19" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "FUN_000493f0(iVar19,local_c0,piVar20,piVar20);" (call_expression "FUN_000493f0(iVar19,local_c0,piVar20,piVar20)" (identifier "FUN_000493f0") (argument_list "(iVar19,local_c0,piVar20,piVar20)" (( "(") (identifier "iVar19") (, ",") (identifier "local_c0") (, ",") (identifier "piVar20") (, ",") (identifier "piVar20") () ")"))) (; ";")) (expression_statement "FUN_00049630(local_c0);" (call_expression "FUN_00049630(local_c0)" (identifier "FUN_00049630") (argument_list "(local_c0)" (( "(") (identifier "local_c0") () ")"))) (; ";")) (expression_statement "param_2[0x30] = 0;" (assignment_expression "param_2[0x30] = 0" (subscript_expression "param_2[0x30]" (identifier "param_2") ([ "[") (number_literal "0x30") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x31] = 0;" (assignment_expression "param_2[0x31] = 0" (subscript_expression "param_2[0x31]" (identifier "param_2") ([ "[") (number_literal "0x31") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x32] = 0;" (assignment_expression "param_2[0x32] = 0" (subscript_expression "param_2[0x32]" (identifier "param_2") ([ "[") (number_literal "0x32") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[0x33] = 0;" (assignment_expression "param_2[0x33] = 0" (subscript_expression "param_2[0x33]" (identifier "param_2") ([ "[") (number_literal "0x33") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x38] = 0;" (assignment_expression "local_d0[0x38] = 0" (subscript_expression "local_d0[0x38]" (identifier "local_d0") ([ "[") (number_literal "0x38") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x39] = 0;" (assignment_expression "local_d0[0x39] = 0" (subscript_expression "local_d0[0x39]" (identifier "local_d0") ([ "[") (number_literal "0x39") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x3a] = 0;" (assignment_expression "local_d0[0x3a] = 0" (subscript_expression "local_d0[0x3a]" (identifier "local_d0") ([ "[") (number_literal "0x3a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x3b] = 0;" (assignment_expression "local_d0[0x3b] = 0" (subscript_expression "local_d0[0x3b]" (identifier "local_d0") ([ "[") (number_literal "0x3b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);" (call_expression "FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c)" (identifier "FUN_000496a0") (argument_list "(piVar20,1,unaff_EBP + 0x3241c)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x3241c" (identifier "unaff_EBP") (+ "+") (number_literal "0x3241c")) () ")"))) (; ";")) (expression_statement "iVar11 = FUN_0008d250();" (assignment_expression "iVar11 = FUN_0008d250()" (identifier "iVar11") (= "=") (call_expression "FUN_0008d250()" (identifier "FUN_0008d250") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(byte **)(local_d0 + 0x38) = param_2;" (assignment_expression "*(byte **)(local_d0 + 0x38) = param_2" (pointer_expression "*(byte **)(local_d0 + 0x38)" (* "*") (cast_expression "(byte **)(local_d0 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 0x38)" (( "(") (binary_expression "local_d0 + 0x38" (identifier "local_d0") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar11 == 0) {\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_c0 = FUN_00049630(iVar13);\n                FUN_00049630(0);\nLAB_000a1b0c:\n                FUN_00049630(iVar19);\n                goto LAB_000a191e;\n              }" ({ "{") (expression_statement "local_c0 = FUN_00049630(iVar13);" (assignment_expression "local_c0 = FUN_00049630(iVar13)" (identifier "local_c0") (= "=") (call_expression "FUN_00049630(iVar13)" (identifier "FUN_00049630") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (; ";")) (expression_statement "FUN_00049630(0);" (call_expression "FUN_00049630(0)" (identifier "FUN_00049630") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (labeled_statement "LAB_000a1b0c:\n                FUN_00049630(iVar19);" (statement_identifier "LAB_000a1b0c") (: ":") (expression_statement "FUN_00049630(iVar19);" (call_expression "FUN_00049630(iVar19)" (identifier "FUN_00049630") (argument_list "(iVar19)" (( "(") (identifier "iVar19") () ")"))) (; ";"))) (goto_statement "goto LAB_000a191e;" (goto "goto") (statement_identifier "LAB_000a191e") (; ";")) (} "}"))) (} "}")))) (if_statement "if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_00054000();\n            }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x30) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x30) != 0" (pointer_expression "*(int *)(param_2 + 0x30)" (* "*") (cast_expression "(int *)(param_2 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00054000();\n            }" ({ "{") (expression_statement "FUN_00054000();" (call_expression "FUN_00054000()" (identifier "FUN_00054000") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int **)(param_2 + 0x30) = piVar14;" (assignment_expression "*(int **)(param_2 + 0x30) = piVar14" (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "piVar14")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x3c) = uVar16;" (assignment_expression "*(undefined4 *)(param_2 + 0x3c) = uVar16" (pointer_expression "*(undefined4 *)(param_2 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" (else "else") (compound_statement "{\nLAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);\n        }" ({ "{") (labeled_statement "LAB_000a0251:\n          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);" (statement_identifier "LAB_000a0251") (: ":") (expression_statement "FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);" (call_expression "FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP)" (identifier "FUN_0003d470") (argument_list "(piVar20,&UNK_00034d93 + unaff_EBP)" (( "(") (identifier "piVar20") (, ",") (binary_expression "&UNK_00034d93 + unaff_EBP" (pointer_expression "&UNK_00034d93" (& "&") (identifier "UNK_00034d93")) (+ "+") (identifier "unaff_EBP")) () ")"))) (; ";"))) (} "}")))) (if_statement "if (piVar20[9] == 0) {\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }" (if "if") (parenthesized_expression "(piVar20[9] == 0)" (( "(") (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" (identifier "piVar20") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_c0 = 0;\n          local_d0 = (byte *)0x0;\nLAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }\nLAB_000a028c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c0 != 0) {\n            FUN_00053bb0();\n          }\n          goto LAB_0009fe71;\n        }" ({ "{") (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = (byte *)0x0;" (assignment_expression "local_d0 = (byte *)0x0" (identifier "local_d0") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000a0282:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" (statement_identifier "LAB_000a0282") (: ":") (if_statement "if ((param_2[4] & 0x20) != 0) {\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" (if "if") (parenthesized_expression "((param_2[4] & 0x20) != 0)" (( "(") (binary_expression "(param_2[4] & 0x20) != 0" (parenthesized_expression "(param_2[4] & 0x20)" (( "(") (binary_expression "param_2[4] & 0x20" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar19 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_0002fcc0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }\n          }" ({ "{") (expression_statement "iVar19 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar19 = **(int **)(param_2 + 0x1c)" (identifier "iVar19") (= "=") (pointer_expression "**(int **)(param_2 + 0x1c)" (* "*") (pointer_expression "*(int **)(param_2 + 0x1c)" (* "*") (cast_expression "(int **)(param_2 + 0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (expression_statement "piVar20 = (int *)FUN_0002fcc0();" (assignment_expression "piVar20 = (int *)FUN_0002fcc0()" (identifier "piVar20") (= "=") (cast_expression "(int *)FUN_0002fcc0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002fcc0()" (identifier "FUN_0002fcc0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" (if "if") (parenthesized_expression "(piVar20 == (int *)0x0)" (( "(") (binary_expression "piVar20 == (int *)0x0" (identifier "piVar20") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              local_d0 = (byte *)0x7;\n            }" ({ "{") (expression_statement "local_d0 = (byte *)0x7;" (assignment_expression "local_d0 = (byte *)0x7" (identifier "local_d0") (= "=") (cast_expression "(byte *)0x7" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7"))) (; ";")) (} "}")) (else_clause "else {\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" (else "else") (compound_statement "{\n              if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);\n              iVar19 = *piVar20;\n              *piVar20 = iVar19 + -1;\n              if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }\n            }" ({ "{") (if_statement "if (0 < iVar19) {\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }" (if "if") (parenthesized_expression "(0 < iVar19)" (( "(") (binary_expression "0 < iVar19" (number_literal "0") (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n                iVar29 = 0;\n                do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);\n              }" ({ "{") (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" (identifier "iVar29") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                } while (iVar19 != iVar29);" (do "do") (compound_statement "{\n                  iVar21 = FUN_0004ff90(iVar29);\n                  piVar20[iVar29 + 5] = iVar21;\n                  if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar29 = iVar29 + 1;\n                }" ({ "{") (expression_statement "iVar21 = FUN_0004ff90(iVar29);" (assignment_expression "iVar21 = FUN_0004ff90(iVar29)" (identifier "iVar21") (= "=") (call_expression "FUN_0004ff90(iVar29)" (identifier "FUN_0004ff90") (argument_list "(iVar29)" (( "(") (identifier "iVar29") () ")")))) (; ";")) (expression_statement "piVar20[iVar29 + 5] = iVar21;" (assignment_expression "piVar20[iVar29 + 5] = iVar21" (subscript_expression "piVar20[iVar29 + 5]" (identifier "piVar20") ([ "[") (binary_expression "iVar29 + 5" (identifier "iVar29") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (iVar21 == 0) {\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);\n                  }" ({ "{") (expression_statement "piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);" (assignment_expression "piVar20[iVar29 + 5] = *(int *)(iVar15 + 8)" (subscript_expression "piVar20[iVar29 + 5]" (identifier "piVar20") ([ "[") (binary_expression "iVar29 + 5" (identifier "iVar29") (+ "+") (number_literal "5")) (] "]")) (= "=") (pointer_expression "*(int *)(iVar15 + 8)" (* "*") (cast_expression "(int *)(iVar15 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 8)" (( "(") (binary_expression "iVar15 + 8" (identifier "iVar15") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" (identifier "iVar29") (= "=") (binary_expression "iVar29 + 1" (identifier "iVar29") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 != iVar29)" (( "(") (binary_expression "iVar19 != iVar29" (identifier "iVar19") (!= "!=") (identifier "iVar29")) () ")")) (; ";")) (} "}"))) (do_statement "do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              } while (param_2 != (byte *)0x0);" (do "do") (compound_statement "{\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }\n                param_2 = *(byte **)(param_2 + 0x34);\n              }" ({ "{") (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (while_statement "while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" (while "while") (parenthesized_expression "(-1 < *(int *)(param_2 + iVar15 * 4 + 0x14))" (( "(") (binary_expression "-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(param_2 + iVar15 * 4 + 0x14)" (* "*") (cast_expression "(int *)(param_2 + iVar15 * 4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar15 * 4 + 0x14)" (( "(") (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" (identifier "param_2") (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }\n                  *piVar20 = *piVar20 + 1;\n                  FUN_000436c0(0xfffffff7);\n                  pbVar3 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar3[0] = 0xff;\n                  pbVar3[1] = 0xff;\n                  pbVar3[2] = 0xff;\n                  pbVar3[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" ({ "{") (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }\n                  else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" (if "if") (parenthesized_expression "(*(char *)(*local_c8 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*local_c8 + 0x4d) == '\0'" (pointer_expression "*(char *)(*local_c8 + 0x4d)" (* "*") (cast_expression "(char *)(*local_c8 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_c8 + 0x4d)" (( "(") (binary_expression "*local_c8 + 0x4d" (pointer_expression "*local_c8" (* "*") (identifier "local_c8")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;\n                  }" ({ "{") (expression_statement "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19;" (assignment_expression "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =\n                         iVar19" (pointer_expression "*(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" (* "*") (cast_expression "(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8)" (( "(") (binary_expression "local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8" (binary_expression "local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (subscript_expression "local_c8[0x19]" (identifier "local_c8") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "*(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (pointer_expression "*(int *)(param_2 + iVar15 * 4 + 0x14)" (* "*") (cast_expression "(int *)(param_2 + iVar15 * 4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar15 * 4 + 0x14)" (( "(") (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" (identifier "param_2") (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x14")) () ")")))) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (} "}")) (else_clause "else {\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" (else "else") (compound_statement "{\n                    *(int *)(unaff_EBP + 0x6782b) = iVar19;\n                  }" ({ "{") (expression_statement "*(int *)(unaff_EBP + 0x6782b) = iVar19;" (assignment_expression "*(int *)(unaff_EBP + 0x6782b) = iVar19" (pointer_expression "*(int *)(unaff_EBP + 0x6782b)" (* "*") (cast_expression "(int *)(unaff_EBP + 0x6782b)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x6782b)" (( "(") (binary_expression "unaff_EBP + 0x6782b" (identifier "unaff_EBP") (+ "+") (number_literal "0x6782b")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (} "}")))) (expression_statement "*piVar20 = *piVar20 + 1;" (assignment_expression "*piVar20 = *piVar20 + 1" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (= "=") (binary_expression "*piVar20 + 1" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000436c0(0xfffffff7);" (call_expression "FUN_000436c0(0xfffffff7)" (identifier "FUN_000436c0") (argument_list "(0xfffffff7)" (( "(") (number_literal "0xfffffff7") () ")"))) (; ";")) (expression_statement "pbVar3 = param_2 + iVar15 * 4 + 0x14;" (assignment_expression "pbVar3 = param_2 + iVar15 * 4 + 0x14" (identifier "pbVar3") (= "=") (binary_expression "param_2 + iVar15 * 4 + 0x14" (binary_expression "param_2 + iVar15 * 4" (identifier "param_2") (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x14"))) (; ";")) (expression_statement "pbVar3[0] = 0xff;" (assignment_expression "pbVar3[0] = 0xff" (subscript_expression "pbVar3[0]" (identifier "pbVar3") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar3[1] = 0xff;" (assignment_expression "pbVar3[1] = 0xff" (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar3[2] = 0xff;" (assignment_expression "pbVar3[2] = 0xff" (subscript_expression "pbVar3[2]" (identifier "pbVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar3[3] = 0xff;" (assignment_expression "pbVar3[3] = 0xff" (subscript_expression "pbVar3[3]" (identifier "pbVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (if_statement "if (iVar15 == 1) break;" (if "if") (parenthesized_expression "(iVar15 == 1)" (( "(") (binary_expression "iVar15 == 1" (identifier "iVar15") (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar15 = 1;" (assignment_expression "iVar15 = 1" (identifier "iVar15") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "param_2 = *(byte **)(param_2 + 0x34);" (assignment_expression "param_2 = *(byte **)(param_2 + 0x34)" (identifier "param_2") (= "=") (pointer_expression "*(byte **)(param_2 + 0x34)" (* "*") (cast_expression "(byte **)(param_2 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != (byte *)0x0)" (( "(") (binary_expression "param_2 != (byte *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar19 = *piVar20;" (assignment_expression "iVar19 = *piVar20" (identifier "iVar19") (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "*piVar20 = iVar19 + -1;" (assignment_expression "*piVar20 = iVar19 + -1" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (= "=") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar19 + -1 == 0) {\n                FUN_00023410();\n              }" (if "if") (parenthesized_expression "(iVar19 + -1 == 0)" (( "(") (binary_expression "iVar19 + -1 == 0" (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_00023410();\n              }" ({ "{") (expression_statement "FUN_00023410();" (call_expression "FUN_00023410()" (identifier "FUN_00023410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (labeled_statement "LAB_000a028c:\n          param_3[3] = local_68;" (statement_identifier "LAB_000a028c") (: ":") (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_68")) (; ";"))) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_64")) (; ";")) (if_statement "if (local_c0 != 0) {\n            FUN_00053bb0();\n          }" (if "if") (parenthesized_expression "(local_c0 != 0)" (( "(") (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00053bb0();\n          }" ({ "{") (expression_statement "FUN_00053bb0();" (call_expression "FUN_00053bb0()" (identifier "FUN_00053bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0009fe71;" (goto "goto") (statement_identifier "LAB_0009fe71") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" (else "else") (compound_statement "{\n        iVar29 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }\n        pbVar3 = *(byte **)(param_2 + 0x34);\n        local_d0 = param_2;\n        if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }\n        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);\n        if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }\n      }" ({ "{") (expression_statement "iVar29 = *(int *)(param_2 + 0x3c);" (assignment_expression "iVar29 = *(int *)(param_2 + 0x3c)" (identifier "iVar29") (= "=") (pointer_expression "*(int *)(param_2 + 0x3c)" (* "*") (cast_expression "(int *)(param_2 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c)" (( "(") (binary_expression "param_2 + 0x3c" (identifier "param_2") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(param_2 + 0x44) != 0" (pointer_expression "*(int *)(param_2 + 0x44)" (* "*") (cast_expression "(int *)(param_2 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;\n          goto LAB_0009ff43;\n        }" ({ "{") (if_statement "if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;" (if "if") (parenthesized_expression "((uVar12 & 0x2000) != 0)" (( "(") (binary_expression "(uVar12 & 0x2000) != 0" (parenthesized_expression "(uVar12 & 0x2000)" (( "(") (binary_expression "uVar12 & 0x2000" (identifier "uVar12") (& "&") (number_literal "0x2000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a0251;" (goto "goto") (statement_identifier "LAB_000a0251") (; ";"))) (goto_statement "goto LAB_0009ff43;" (goto "goto") (statement_identifier "LAB_0009ff43") (; ";")) (} "}"))) (expression_statement "pbVar3 = *(byte **)(param_2 + 0x34);" (assignment_expression "pbVar3 = *(byte **)(param_2 + 0x34)" (identifier "pbVar3") (= "=") (pointer_expression "*(byte **)(param_2 + 0x34)" (* "*") (cast_expression "(byte **)(param_2 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_d0 = param_2;" (assignment_expression "local_d0 = param_2" (identifier "local_d0") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (pbVar3 == (byte *)0x0) {\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }\n        else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" (if "if") (parenthesized_expression "(pbVar3 == (byte *)0x0)" (( "(") (binary_expression "pbVar3 == (byte *)0x0" (identifier "pbVar3") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000a122a:\n          local_cc = (int *)0x1;\n          iVar19 = unaff_EBP + 0x327e3;\n        }" ({ "{") (labeled_statement "LAB_000a122a:\n          local_cc = (int *)0x1;" (statement_identifier "LAB_000a122a") (: ":") (expression_statement "local_cc = (int *)0x1;" (assignment_expression "local_cc = (int *)0x1" (identifier "local_cc") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (expression_statement "iVar19 = unaff_EBP + 0x327e3;" (assignment_expression "iVar19 = unaff_EBP + 0x327e3" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x327e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x327e3"))) (; ";")) (} "}")) (else_clause "else {\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" (else "else") (compound_statement "{\n          local_cc = (int *)0x1;\n          pbVar26 = pbVar3;\n          do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);\n          iVar19 = unaff_EBP + 0x329e1;\n          if (local_cc == (int *)0x1) goto LAB_000a122a;\n        }" ({ "{") (expression_statement "local_cc = (int *)0x1;" (assignment_expression "local_cc = (int *)0x1" (identifier "local_cc") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "pbVar26 = pbVar3;" (assignment_expression "pbVar26 = pbVar3" (identifier "pbVar26") (= "=") (identifier "pbVar3")) (; ";")) (do_statement "do {\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);" (do "do") (compound_statement "{\n            local_d0 = pbVar26;\n            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));\n            if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }\n            pbVar26 = *(byte **)(local_d0 + 0x34);\n          }" ({ "{") (expression_statement "local_d0 = pbVar26;" (assignment_expression "local_d0 = pbVar26" (identifier "local_d0") (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));" (assignment_expression "local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0))" (identifier "local_cc") (= "=") (cast_expression "(int *)((int)local_cc + (uint)(iVar29 == 0))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_cc + (uint)(iVar29 == 0))" (( "(") (binary_expression "(int)local_cc + (uint)(iVar29 == 0)" (cast_expression "(int)local_cc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_cc")) (+ "+") (call_expression "(uint)(iVar29 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar29 == 0)" (( "(") (binary_expression "iVar29 == 0" (identifier "iVar29") (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (if_statement "if (*(int *)(local_d0 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }" (if "if") (parenthesized_expression "(*(int *)(local_d0 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(local_d0 + 0x44) != 0" (pointer_expression "*(int *)(local_d0 + 0x44)" (* "*") (cast_expression "(int *)(local_d0 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 0x44)" (( "(") (binary_expression "local_d0 + 0x44" (identifier "local_d0") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar3;\n              goto LAB_000a035e;\n            }" ({ "{") (if_statement "if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;" (if "if") (parenthesized_expression "((uVar12 & 0x2000) == 0)" (( "(") (binary_expression "(uVar12 & 0x2000) == 0" (parenthesized_expression "(uVar12 & 0x2000)" (( "(") (binary_expression "uVar12 & 0x2000" (identifier "uVar12") (& "&") (number_literal "0x2000")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009ff43;" (goto "goto") (statement_identifier "LAB_0009ff43") (; ";"))) (expression_statement "piVar28 = *(int **)(param_2 + 0x20);" (assignment_expression "piVar28 = *(int **)(param_2 + 0x20)" (identifier "piVar28") (= "=") (pointer_expression "*(int **)(param_2 + 0x20)" (* "*") (cast_expression "(int **)(param_2 + 0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "local_c0 = **(undefined4 **)(param_2 + 0x1c);" (assignment_expression "local_c0 = **(undefined4 **)(param_2 + 0x1c)" (identifier "local_c0") (= "=") (pointer_expression "**(undefined4 **)(param_2 + 0x1c)" (* "*") (pointer_expression "*(undefined4 **)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))))) (; ";")) (expression_statement "local_d0 = pbVar3;" (assignment_expression "local_d0 = pbVar3" (identifier "local_d0") (= "=") (identifier "pbVar3")) (; ";")) (goto_statement "goto LAB_000a035e;" (goto "goto") (statement_identifier "LAB_000a035e") (; ";")) (} "}"))) (expression_statement "pbVar26 = *(byte **)(local_d0 + 0x34);" (assignment_expression "pbVar26 = *(byte **)(local_d0 + 0x34)" (identifier "pbVar26") (= "=") (pointer_expression "*(byte **)(local_d0 + 0x34)" (* "*") (cast_expression "(byte **)(local_d0 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 0x34)" (( "(") (binary_expression "local_d0 + 0x34" (identifier "local_d0") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(byte **)(local_d0 + 0x34) != (byte *)0x0)" (( "(") (binary_expression "*(byte **)(local_d0 + 0x34) != (byte *)0x0" (pointer_expression "*(byte **)(local_d0 + 0x34)" (* "*") (cast_expression "(byte **)(local_d0 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 0x34)" (( "(") (binary_expression "local_d0 + 0x34" (identifier "local_d0") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar19 = unaff_EBP + 0x329e1;" (assignment_expression "iVar19 = unaff_EBP + 0x329e1" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x329e1" (identifier "unaff_EBP") (+ "+") (number_literal "0x329e1"))) (; ";")) (if_statement "if (local_cc == (int *)0x1) goto LAB_000a122a;" (if "if") (parenthesized_expression "(local_cc == (int *)0x1)" (( "(") (binary_expression "local_cc == (int *)0x1" (identifier "local_cc") (== "==") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (goto_statement "goto LAB_000a122a;" (goto "goto") (statement_identifier "LAB_000a122a") (; ";"))) (} "}")))) (expression_statement "FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);" (call_expression "FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19)" (identifier "FUN_000496a0") (argument_list "(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19)" (( "(") (identifier "piVar20") (, ",") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x32405" (identifier "unaff_EBP") (+ "+") (number_literal "0x32405")) (, ",") (identifier "local_cc") (, ",") (identifier "iVar19") () ")"))) (; ";")) (if_statement "if (iVar29 == 0) {\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }\n        else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" (if "if") (parenthesized_expression "(iVar29 == 0)" (( "(") (binary_expression "iVar29 == 0" (identifier "iVar29") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);\n        }" ({ "{") (do_statement "do {\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          } while (local_d0 != (byte *)0x0);" (do "do") (compound_statement "{\n            FUN_000964a0(0,0,&local_74,1,1);\n            *(short *)(local_d0 + 2) = (short)local_cc;\n            local_d0 = *(byte **)(local_d0 + 0x38);\n          }" ({ "{") (expression_statement "FUN_000964a0(0,0,&local_74,1,1);" (call_expression "FUN_000964a0(0,0,&local_74,1,1)" (identifier "FUN_000964a0") (argument_list "(0,0,&local_74,1,1)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (number_literal "1") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "*(short *)(local_d0 + 2) = (short)local_cc;" (assignment_expression "*(short *)(local_d0 + 2) = (short)local_cc" (pointer_expression "*(short *)(local_d0 + 2)" (* "*") (cast_expression "(short *)(local_d0 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 2)" (( "(") (binary_expression "local_d0 + 2" (identifier "local_d0") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(short)local_cc" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_cc"))) (; ";")) (expression_statement "local_d0 = *(byte **)(local_d0 + 0x38);" (assignment_expression "local_d0 = *(byte **)(local_d0 + 0x38)" (identifier "local_d0") (= "=") (pointer_expression "*(byte **)(local_d0 + 0x38)" (* "*") (cast_expression "(byte **)(local_d0 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_d0 + 0x38)" (( "(") (binary_expression "local_d0 + 0x38" (identifier "local_d0") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_d0 != (byte *)0x0)" (( "(") (binary_expression "local_d0 != (byte *)0x0" (identifier "local_d0") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" (else "else") (compound_statement "{\n          FUN_000964a0(0,0,&local_74,1,1);\n        }" ({ "{") (expression_statement "FUN_000964a0(0,0,&local_74,1,1);" (call_expression "FUN_000964a0(0,0,&local_74,1,1)" (identifier "FUN_000964a0") (argument_list "(0,0,&local_74,1,1)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (number_literal "1") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}")))) (} "}")))) (expression_statement "local_d0 = (byte *)0x0;" (assignment_expression "local_d0 = (byte *)0x0" (identifier "local_d0") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_68")) (; ";")) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_64")) (; ";")) (goto_statement "goto LAB_0009fe71;" (goto "goto") (statement_identifier "LAB_0009fe71") (; ";")) (} "}"))) (expression_statement "cVar6 = *pcVar25;" (assignment_expression "cVar6 = *pcVar25" (identifier "cVar6") (= "=") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25"))) (; ";")) (if_statement "if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" (if "if") (parenthesized_expression "(cVar6 == -0x7a)" (( "(") (binary_expression "cVar6 == -0x7a" (identifier "cVar6") (== "==") (number_literal "-0x7a")) () ")")) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e87;\n    }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e87;" (assignment_expression "iVar19 = unaff_EBP + 0x31e87" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e87" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e87"))) (; ";")) (} "}")) (else_clause "else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" (else "else") (if_statement "if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" (if "if") (parenthesized_expression "(cVar6 == -0x79)" (( "(") (binary_expression "cVar6 == -0x79" (identifier "cVar6") (== "==") (number_literal "-0x79")) () ")")) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e7d;\n    }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar19 = unaff_EBP + 0x31e7d" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e7d" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e7d"))) (; ";")) (} "}")) (else_clause "else {\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" (else "else") (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e8e;\n      if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }\n    }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar19 = unaff_EBP + 0x31e8e" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e8e" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e8e"))) (; ";")) (if_statement "if (cVar6 == -0x7b) {\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }" (if "if") (parenthesized_expression "(cVar6 == -0x7b)" (( "(") (binary_expression "cVar6 == -0x7b" (identifier "cVar6") (== "==") (number_literal "-0x7b")) () ")")) (compound_statement "{\n        iVar19 = unaff_EBP + 0x31e73;\n        puVar10 = (undefined *)(unaff_EBP + 0x323ff);\n        goto LAB_0009fe40;\n      }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e73;" (assignment_expression "iVar19 = unaff_EBP + 0x31e73" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e73" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e73"))) (; ";")) (expression_statement "puVar10 = (undefined *)(unaff_EBP + 0x323ff);" (assignment_expression "puVar10 = (undefined *)(unaff_EBP + 0x323ff)" (identifier "puVar10") (= "=") (cast_expression "(undefined *)(unaff_EBP + 0x323ff)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x323ff)" (( "(") (binary_expression "unaff_EBP + 0x323ff" (identifier "unaff_EBP") (+ "+") (number_literal "0x323ff")) () ")")))) (; ";")) (goto_statement "goto LAB_0009fe40;" (goto "goto") (statement_identifier "LAB_0009fe40") (; ";")) (} "}"))) (} "}")))))) (expression_statement "puVar10 = (undefined *)(unaff_EBP + 0x323ff);" (assignment_expression "puVar10 = (undefined *)(unaff_EBP + 0x323ff)" (identifier "puVar10") (= "=") (cast_expression "(undefined *)(unaff_EBP + 0x323ff)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x323ff)" (( "(") (binary_expression "unaff_EBP + 0x323ff" (identifier "unaff_EBP") (+ "+") (number_literal "0x323ff")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" (else "else") (compound_statement "{\n    cVar6 = *pcVar25;\n    if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }\n    puVar10 = &UNK_0003228a + unaff_EBP;\n  }" ({ "{") (expression_statement "cVar6 = *pcVar25;" (assignment_expression "cVar6 = *pcVar25" (identifier "cVar6") (= "=") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25"))) (; ";")) (if_statement "if (cVar6 == -0x7a) {\n      iVar19 = unaff_EBP + 0x31e87;\n    }\n    else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" (if "if") (parenthesized_expression "(cVar6 == -0x7a)" (( "(") (binary_expression "cVar6 == -0x7a" (identifier "cVar6") (== "==") (number_literal "-0x7a")) () ")")) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e87;\n    }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e87;" (assignment_expression "iVar19 = unaff_EBP + 0x31e87" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e87" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e87"))) (; ";")) (} "}")) (else_clause "else if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" (else "else") (if_statement "if (cVar6 == -0x79) {\n      iVar19 = unaff_EBP + 0x31e7d;\n    }\n    else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" (if "if") (parenthesized_expression "(cVar6 == -0x79)" (( "(") (binary_expression "cVar6 == -0x79" (identifier "cVar6") (== "==") (number_literal "-0x79")) () ")")) (compound_statement "{\n      iVar19 = unaff_EBP + 0x31e7d;\n    }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e7d;" (assignment_expression "iVar19 = unaff_EBP + 0x31e7d" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e7d" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e7d"))) (; ";")) (} "}")) (else_clause "else {\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" (else "else") (compound_statement "{\n      if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }\n      iVar19 = unaff_EBP + 0x31e73;\n    }" ({ "{") (if_statement "if (cVar6 != -0x7b) {\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }" (if "if") (parenthesized_expression "(cVar6 != -0x7b)" (( "(") (binary_expression "cVar6 != -0x7b" (identifier "cVar6") (!= "!=") (number_literal "-0x7b")) () ")")) (compound_statement "{\n        iVar19 = unaff_EBP + 0x31e8e;\n        puVar10 = &UNK_0003228a + unaff_EBP;\n        goto LAB_0009fe40;\n      }" ({ "{") (expression_statement "iVar19 = unaff_EBP + 0x31e8e;" (assignment_expression "iVar19 = unaff_EBP + 0x31e8e" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e8e" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e8e"))) (; ";")) (expression_statement "puVar10 = &UNK_0003228a + unaff_EBP;" (assignment_expression "puVar10 = &UNK_0003228a + unaff_EBP" (identifier "puVar10") (= "=") (binary_expression "&UNK_0003228a + unaff_EBP" (pointer_expression "&UNK_0003228a" (& "&") (identifier "UNK_0003228a")) (+ "+") (identifier "unaff_EBP"))) (; ";")) (goto_statement "goto LAB_0009fe40;" (goto "goto") (statement_identifier "LAB_0009fe40") (; ";")) (} "}"))) (expression_statement "iVar19 = unaff_EBP + 0x31e73;" (assignment_expression "iVar19 = unaff_EBP + 0x31e73" (identifier "iVar19") (= "=") (binary_expression "unaff_EBP + 0x31e73" (identifier "unaff_EBP") (+ "+") (number_literal "0x31e73"))) (; ";")) (} "}")))))) (expression_statement "puVar10 = &UNK_0003228a + unaff_EBP;" (assignment_expression "puVar10 = &UNK_0003228a + unaff_EBP" (identifier "puVar10") (= "=") (binary_expression "&UNK_0003228a + unaff_EBP" (pointer_expression "&UNK_0003228a" (& "&") (identifier "UNK_0003228a")) (+ "+") (identifier "unaff_EBP"))) (; ";")) (} "}")))) (labeled_statement "LAB_0009fe40:\n  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);" (statement_identifier "LAB_0009fe40") (: ":") (expression_statement "FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);" (call_expression "FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19)" (identifier "FUN_0003d470") (argument_list "(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19)" (( "(") (identifier "piVar20") (, ",") (binary_expression "&UNK_00034d67 + unaff_EBP" (pointer_expression "&UNK_00034d67" (& "&") (identifier "UNK_00034d67")) (+ "+") (identifier "unaff_EBP")) (, ",") (identifier "puVar10") (, ",") (identifier "iVar19") () ")"))) (; ";"))) (expression_statement "param_3[3] = local_68;" (assignment_expression "param_3[3] = local_68" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_68")) (; ";")) (expression_statement "param_3[4] = local_64;" (assignment_expression "param_3[4] = local_64" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_64")) (; ";")) (expression_statement "local_d0 = (byte *)0x1;" (assignment_expression "local_d0 = (byte *)0x1" (identifier "local_d0") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (labeled_statement "LAB_0009fe71:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" (statement_identifier "LAB_0009fe71") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\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    return (uint)local_d0;\n  }" ({ "{") (return_statement "return (uint)local_d0;" (return "return") (cast_expression "(uint)local_d0" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_d0")) (; ";")) (} "}")))) (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" (identifier "FUN_000d1450") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

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

int __regparm3 function_1(type_1 *pParse,type_2 *var_68,type_3 *pDest)

{
  type_4 *puVar1;
  int var_15;
  type_5 *psVar3;
  type_6 *var_21;
  type_2 *var_24;
  type_7 var_55;
  short sVar7;
  type_6 *puVar8;
  type_8 var_11;
  type_9 var_58;
  type_10 LVar11;
  short var_52;
  char *pcVar13;
  int var_64;
  type_7 var_5;
  int var_13;
  type_11 *var_9;
  int *var_18;
  type_12 *var_29;
  type_13 *var_26;
  type_3 *var_61;
  int var_35;
  int var_38;
  int var_43;
  type_4 var_40;
  int var_7;
  int var_47;
  type_14 *pOVar27;
  type_15 *var_66;
  type_1 *iContinue;
  type_1 *pPVar29;
  type_16 *pVVar30;
  type_7 var_53;
  short var_54;
  type_17 *pDVar33;
  int extraout_ECX;
  int extraout_ECX_00;
  type_18 *var_14;
  type_2 *var_23;
  type_7 var_12;
  type_2 *var_28;
  type_19 *pSVar38;
  type_2 *var_67;
  type_20 *pSVar40;
  int var_1;
  bool bVar41;
  char *in_stack_ffffff18;
  int iVar42;
  int p3;
  type_3 *pSVar43;
  char *pcVar44;
  char *in_stack_ffffff1c;
  char *in_stack_ffffff20;
  type_1 *pPVar45;
  type_2 *in_stack_ffffff24;
  type_21 in_stack_ffffff28;
  type_2 *var_48;
  type_12 *var_70;
  type_16 *var_2;
  type_16 *var_49;
  type_2 *var_69;
  type_7 var_57;
  int local_b4;
  type_15 *var_6;
  type_3 *local_a8;
  int local_a0;
  int local_9c;
  type_15 *local_98;
  int local_94;
  int local_90;
  int local_88;
  type_3 dest;
  type_3 destA;
  int var_51;
  type_7 local_38;
  int local_34;
  int local_30;
  type_6 local_2c [20];
  type_22 x;
  
  x.n = 0x9fdad;
  var_67 = var_68->pPrior;
  psVar3 = pParse->db;
  local_2c._12_4_ = *(type_4 *)(var_1 + 0x14);
  dest.eDest = pDest->eDest;
  dest._1_3_ = *(type_23 *)&pDest->field_0x1;
  dest.iSDParm = pDest->iSDParm;
  dest.iSDParm2 = pDest->iSDParm2;
  dest.iSdst = pDest->iSdst;
  dest.nSdst = pDest->nSdst;
  dest.zAffSdst = pDest->zAffSdst;
  dest.pOrderBy = pDest->pOrderBy;
  if (var_67->pOrderBy == (type_12 *)0x0) {
    if (var_67->pLimit == (type_11 *)0x0) {
      var_2 = pParse->pVdbe;
      if (var_2 == (type_16 *)0x0) {
        in_stack_ffffff20 = (char *)0xa0c89;
        var_2 = var_3(pParse);
      }
      if (dest.eDest == '\f') {
        var_4(var_2,100,dest.iSDParm,var_68->pEList->nExpr,(int)in_stack_ffffff18);
        dest.eDest = '\x0e';
      }
      var_5 = var_68->selFlags;
      if ((var_5 & 0x400) == 0) {
        if ((var_5 & 0x2000) == 0) {
LAB_0009ff43:
          var_6 = (type_15 *)var_68->pOrderBy;
          if (var_6 != (type_15 *)0x0) {
            psVar3 = pParse->db;
            pVVar30 = pParse->pVdbe;
            var_47 = pParse->nLabel + -1;
            var_64 = pParse->nLabel + -2;
            pParse->nLabel = var_64;
            var_5 = (type_7)var_68->op;
            var_67 = var_68->pPrior;
            var_7 = ((type_12 *)var_6)->nExpr;
            if (((var_5 != 0x85) && (psVar3->mallocFailed == '\0')) &&
               (var_70 = var_68->pEList, 0 < var_70->nExpr)) {
              var_12 = 1;
              do {
                if (var_7 < 1) {
                  if (var_7 == 0) {
LAB_000a000e:
                    var_51 = 0;
                    local_38 = 0;
                    var_9 = var_8(psVar3,0x98,(type_22 *)&var_51,(int)in_stack_ffffff24);
                    if (var_9 == (type_11 *)0x0) {
                      var_48 = (type_2 *)0x7;
                      goto LAB_0009fe71;
                    }
                    var_9->flags = var_9->flags | 0x400;
                    (var_9->u).iValue = var_12;
                    var_6 = (type_15 *)
                               var_10
                                         ((type_1 *)pParse->db,(type_12 *)var_6,var_9);
                    var_68->pOrderBy = (type_12 *)var_6;
                    if (var_6 == (type_15 *)0x0) {
                      var_11 = psVar3->mallocFailed;
                    }
                    else {
                      ((type_12 *)var_6)->a[var_7].u.x.iOrderByCol = (type_24)var_12;
                      var_11 = psVar3->mallocFailed;
                      var_7 = var_7 + 1;
                    }
                    if (var_11 != '\0') break;
                    var_70 = var_68->pEList;
                  }
                }
                else if (((type_12 *)var_6)->a[0].u.x.iOrderByCol != var_12) {
                  var_13 = 0;
                  var_14 = ((type_12 *)var_6)->a;
                  do {
                    var_13 = var_13 + 1;
                    if (var_13 == var_7) goto LAB_000a000e;
                    var_15 = (int)(var_14 + 1);
                    var_14 = var_14 + 1;
                  } while (*(type_25 *)(var_15 + 0xc) != var_12);
                }
                var_12 = var_12 + 1;
              } while ((int)var_12 <= var_70->nExpr);
            }
            local_a8 = (type_3 *)&var_51;
            var_18 = (int *)var_16(psVar3,var_17(in_stack_ffffff28,in_stack_ffffff24));
            local_98 = (type_15 *)0x0;
            if (var_18 != (int *)0x0) {
              *var_18 = var_7;
              if (0 < var_7) {
                var_13 = 0;
                do {
                  *(type_7 *)((int)var_18 + var_13 + 4) =
                       (&((type_18 *)&var_6->enc)->u)[var_13].x.iOrderByCol - 1;
                  var_13 = var_13 + 4;
                } while (var_7 * 4 != var_13);
              }
              local_98 = var_19(pParse,var_68,(int)&var_6->enc);
            }
            var_68->pOrderBy = (type_12 *)var_6;
            var_29 = var_20(pParse->db,(type_12 *)var_6,0);
            var_67->pOrderBy = var_29;
            if (var_5 == 0x85) {
              var_6 = (type_15 *)0x0;
              local_94 = 0;
            }
            else {
              var_21 = (type_6 *)var_68->pEList->nExpr;
              local_94 = pParse->nMem + 1;
              pParse->nMem = (int)(var_21 + pParse->nMem + 1);
              var_4(pVVar30,0x45,0,local_94,(int)in_stack_ffffff18);
              var_6 = var_22(psVar3,(int)var_21,1);
              if ((var_6 != (type_15 *)0x0) && (0 < (int)var_21)) {
                var_28 = (type_2 *)0x0;
                do {
                  var_23 = var_68->pPrior;
                  if ((var_23 == (type_2 *)0x0) ||
                     (((var_24 = var_23->pPrior, var_24 == (type_2 *)0x0 ||
                       (var_26 = var_25(pParse,(type_2 *)&var_24->pEList,
                                                     (int)var_24->pPrior,var_28),
                       var_26 == (type_13 *)0x0)) &&
                      ((var_23->pEList->nExpr <= (int)var_28 ||
                       (var_26 = var_27(pParse,var_23->pEList->a[(int)var_28].pExpr),
                       var_26 == (type_13 *)0x0)))))) {
                    if ((int)var_28 < var_68->pEList->nExpr) {
                      var_26 = var_27(pParse,var_68->pEList->a[(int)var_28].pExpr);
                    }
                    else {
                      var_26 = (type_13 *)0x0;
                    }
                  }
                  var_6->aColl[(int)var_28] = var_26;
                  var_6->aSortFlags[(int)var_28] = '\0';
                  var_28 = (type_2 *)&var_28->field_0x1;
                } while ((type_2 *)var_21 != var_28);
              }
            }
            var_29 = var_68->pOrderBy;
            var_68->pPrior = (type_2 *)0x0;
            var_67->pNext = (type_2 *)0x0;
            if (((var_29 != (type_12 *)0x0) && (pParse->db->mallocFailed == '\0')) &&
               (pParse->eParseMode < 2)) {
              if (pParse->db->aLimit[2] < var_29->nExpr) {
                in_stack_ffffff18 = "too many terms in %s BY clause";
                var_30(pParse,"too many terms in %s BY clause","ORDER",var_29);
              }
              else {
                var_31(pParse,(type_2 *)&var_68->pEList,var_29,"ORDER");
              }
            }
            if (((var_67->pPrior == (type_2 *)0x0) &&
                (var_29 = var_67->pOrderBy, var_29 != (type_12 *)0x0)) &&
               ((pParse->db->mallocFailed == '\0' && (pParse->eParseMode < 2)))) {
              var_13 = pParse->db->aLimit[2];
              if (var_13 < var_29->nExpr) {
                in_stack_ffffff18 = "too many terms in %s BY clause";
                var_30(pParse,"too many terms in %s BY clause","ORDER",var_13);
              }
              else {
                var_31(pParse,(type_2 *)&var_67->pEList,var_29,"ORDER");
              }
            }
            var_32(pParse,var_68,var_47);
            var_13 = var_68->iLimit;
            if ((var_5 == 0x85) && (var_13 != 0)) {
              local_9c = pParse->nMem + 1;
              local_90 = pParse->nMem + 2;
              pParse->nMem = local_90;
              if (var_68->iOffset != 0) {
                var_13 = var_68->iOffset + 1;
              }
              var_4(pVVar30,0x4d,var_13,local_9c,(int)in_stack_ffffff18);
              var_4(pVVar30,0x4d,local_9c,local_90,(int)in_stack_ffffff18);
            }
            else {
              local_90 = 0;
              local_9c = 0;
            }
            if (var_68->pLimit != (type_11 *)0x0) {
              var_33(psVar3,var_68->pLimit);
            }
            var_68->pLimit = (type_11 *)0x0;
            destA.eDest = '\r';
            destA.iSDParm2 = 0;
            destA.zAffSdst = (char *)0x0;
            destA.iSdst = 0;
            var_35 = pParse->nMem;
            destA.nSdst = 0;
            var_51 = var_34(var_51._1_3_,0xd);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            var_12 = var_35 + 2;
            var_13 = var_35 + 1;
            local_2c._0_4_ = 0;
            var_15 = var_35 + 3;
            var_35 = var_35 + 4;
            pParse->nMem = var_35;
            var_11 = var_68->op;
            var_61 = (type_3 *)"EXCEPT";
            if ((var_11 != 0x86) && (var_61 = (type_3 *)"INTERSECT", var_11 != 0x87)) {
              var_61 = (type_3 *)"UNION ALL";
              if (var_11 != 0x85) {
                var_61 = (type_3 *)"UNION";
              }
            }
            destA.iSDParm = var_13;
            local_38 = var_12;
            var_36(pParse,'\x01',"MERGE (%s)");
            var_38 = var_4(pVVar30,0xd,var_13,0,pVVar30->nOp + 1);
            var_67->iLimit = local_9c;
            iVar42 = 1;
            var_36(pParse,'\x01',"LEFT");
            var_37(pParse,var_67,&destA);
            var_4(pVVar30,0x42,var_13,0,iVar42);
            pPVar45 = pVVar30->pParse;
            pPVar45->nTempReg = '\0';
            pPVar45->nRangeReg = 0;
            if (var_38 < 0) {
              var_38 = pVVar30->nOp + -1;
            }
            pOVar27 = (type_14 *)&dummy_22674;
            if (pVVar30->db->mallocFailed == '\0') {
              pOVar27 = pVVar30->aOp + var_38;
            }
            pOVar27->p2 = pVVar30->nOp;
            var_43 = var_4(pVVar30,0xd,var_12,0,pVVar30->nOp + 1);
            var_38 = var_68->iLimit;
            iVar42 = var_68->iOffset;
            var_68->iOffset = 0;
            var_68->iLimit = local_90;
            p3 = 1;
            var_36(pParse,'\x01',"RIGHT");
            var_37(pParse,var_68,local_a8);
            var_68->iOffset = iVar42;
            var_68->iLimit = var_38;
            var_4(pVVar30,0x42,var_12,0,p3);
            pPVar45 = pVVar30->pParse;
            pPVar45->nTempReg = '\0';
            pPVar45->nRangeReg = 0;
            var_66 = var_6;
            var_38 = var_39
                               (pParse,(type_2 *)&destA.iSdst,(type_3 *)&destA.nSdst,pDest,var_15
                                ,local_94,var_6,var_47,var_61,in_stack_ffffff24);
            local_88 = 0;
            if (var_5 - 0x84 < 2) {
              var_66 = var_6;
              local_88 = var_39
                                   (pParse,(type_2 *)&local_30,(type_3 *)local_2c,pDest,var_35,
                                    local_94,var_6,var_47,var_61,in_stack_ffffff24);
            }
            if ((var_6 != (type_15 *)0x0) &&
               (var_40 = var_6->nRef - 1, var_6->nRef = var_40, var_40 == 0)) {
              var_41(var_6->db,var_6);
            }
            iVar42 = var_47;
            local_94 = var_47;
            if (1 < var_5 - 0x86) {
              iVar42 = var_4(pVVar30,0xc,var_35,local_88,(int)var_66);
              local_94 = var_4(pVVar30,0xe,var_12,var_47,(int)var_66);
              var_4(pVVar30,0xb,0,iVar42,(int)var_66);
              LVar11 = var_42(var_68->nSelectRow,var_67->nSelectRow);
              var_68->nSelectRow = LVar11;
            }
            if (var_5 == 0x87) {
              if (var_67->nSelectRow < var_68->nSelectRow) {
                var_68->nSelectRow = var_67->nSelectRow;
              }
              local_a8 = (type_3 *)var_4(pVVar30,0xc,var_15,var_38,(int)var_66);
              var_4(pVVar30,0xe,var_13,iVar42,(int)var_66);
              var_4(pVVar30,0xb,0,var_64,(int)var_66);
              local_a0 = (int)local_a8 + 1;
              var_6 = (type_15 *)iVar42;
            }
            else {
              var_6 = (type_15 *)var_4(pVVar30,0xc,var_15,var_38,(int)var_66);
              var_4(pVVar30,0xe,var_13,var_47,(int)var_66);
              var_4(pVVar30,0xb,0,(int)var_6,(int)var_66);
              local_a0 = var_4(pVVar30,0xc,var_15,var_38,(int)var_66);
              var_4(pVVar30,0xe,var_13,iVar42,(int)var_66);
              var_4(pVVar30,0xb,0,var_64,(int)var_66);
              local_a8 = (type_3 *)local_a0;
              if (var_5 != 0x85) {
                local_a8 = (type_3 *)var_4(pVVar30,0xe,var_13,iVar42,(int)var_66);
                var_4(pVVar30,0xb,0,var_64,(int)var_66);
              }
            }
            var_15 = pVVar30->nOp;
            if (var_5 - 0x84 < 2) {
              var_4(pVVar30,0xc,var_35,local_88,(int)var_66);
            }
            var_4(pVVar30,0xe,var_12,(int)var_6,(int)var_66);
            var_4(pVVar30,0xb,0,var_64,(int)var_66);
            var_35 = pVVar30->nOp + -1;
            if (-1 < var_43) {
              var_35 = var_43;
            }
            pOVar27 = (type_14 *)&dummy_22674;
            if (pVVar30->db->mallocFailed == '\0') {
              pOVar27 = pVVar30->aOp + var_35;
            }
            pOVar27->p2 = pVVar30->nOp;
            var_4(pVVar30,0xe,var_13,local_94,(int)var_66);
            var_4(pVVar30,0xe,var_12,(int)var_6,(int)var_66);
            var_44(pVVar30,var_64);
            var_64 = var_4(pVVar30,0x55,0,0,(int)var_66);
            var_45(pVVar30,var_64,(char *)var_18,-0xf);
            var_7 = var_4(pVVar30,0x56,destA.iSdst,local_30,var_7);
            var_45(pVVar30,var_7,(char *)local_98,-9);
            if (0 < pVVar30->nOp) {
              pVVar30->aOp[pVVar30->nOp + -1].p5 = 1;
            }
            var_4(pVVar30,0x10,local_a0,(int)local_a8,var_15);
            var_44(pVVar30,var_47);
            if (var_68->pPrior != (type_2 *)0x0) {
              var_46(psVar3,var_68->pPrior,1);
            }
            var_68->pPrior = var_67;
            var_67->pNext = var_68;
            var_47 = pParse->addrExplain;
            if (var_47 != 0) {
              pVVar30 = pParse->pVdbe;
              if (var_47 < 0) {
                var_47 = pVVar30->nOp + -1;
              }
              pOVar27 = (type_14 *)&dummy_22674;
              if (pVVar30->db->mallocFailed == '\0') {
                pOVar27 = pVVar30->aOp + var_47;
              }
              var_47 = pOVar27->p2;
            }
            pParse->addrExplain = var_47;
            var_48 = (type_2 *)(type_7)(pParse->nErr != 0);
            goto LAB_0009fe71;
          }
          if (var_67->pPrior == (type_2 *)0x0) {
            var_36(pParse,'\x01',"COMPOUND QUERY");
            in_stack_ffffff18 = &DAT_00000001;
            var_36(pParse,'\x01',"LEFT-MOST SUBQUERY");
          }
          var_11 = var_68->op;
          if (var_11 == 0x85) {
            var_67->iLimit = var_68->iLimit;
            var_67->iOffset = var_68->iOffset;
            var_67->pLimit = var_68->pLimit;
            var_48 = (type_2 *)var_37(pParse,var_67,&dest);
            var_68->pLimit = (type_11 *)0x0;
            if (var_48 == (type_2 *)0x0) {
              var_49 = (type_16 *)var_67->iLimit;
              var_47 = var_67->iOffset;
              var_68->pPrior = (type_2 *)0x0;
              var_68->iLimit = (int)var_49;
              var_68->iOffset = var_47;
              if (var_49 != (type_16 *)0x0) {
                var_49 = (type_16 *)var_4(var_2,0x14,(int)var_49,0,
                                                     (int)in_stack_ffffff18);
                var_47 = var_68->iOffset;
                if (var_47 != 0) {
                  var_4(var_2,0x98,var_68->iLimit,var_47 + 1,var_47);
                }
              }
              var_36(pParse,'\x01',"UNION ALL");
              var_48 = (type_2 *)var_37(pParse,var_68,&dest);
              var_69 = var_68->pPrior;
              LVar11 = var_67->nSelectRow;
              var_68->pPrior = var_67;
              LVar11 = var_42(var_68->nSelectRow,LVar11);
              var_68->nSelectRow = LVar11;
              if (((var_67->pLimit != (type_11 *)0x0) &&
                  (var_47 = var_50(var_67->pLimit->pLeft,&var_51), var_47 != 0)) &&
                 (0 < var_51)) {
                var_52 = var_68->nSelectRow;
                var_5 = var_51 >> 0x1f;
                if (var_51 < 8) {
                  if (var_51 == 1) {
                    if (0 < var_52) {
                      var_52 = 0;
                      goto LAB_000a1cbb;
                    }
                  }
                  else {
                    var_53 = var_51;
                    var_12 = var_5;
                    sVar7 = 0x28;
                    do {
                      var_54 = sVar7;
                      var_55 = var_53 * 2;
                      if ((var_12 & 0x7fffffff) != 0 || (int)var_53 < 0) break;
                      var_12 = 0;
                      var_53 = var_55;
                      sVar7 = var_54 + -10;
                    } while (var_55 < 8);
                    if ((short)(var_54 + -0x14 + (&a_14957)[var_55 & 7]) < var_52) {
                      var_52 = 0x28;
                      var_57 = var_51;
                      do {
                        var_52 = var_52 + -10;
                        bVar41 = var_56(var_57,var_57);
                        var_57 = var_57 * 2;
                        if (var_5 * 2 + (type_7)bVar41 != 0) break;
                        var_5 = 0;
                      } while (var_57 < 8);
                      goto LAB_000a1ca8;
                    }
                  }
                }
                else {
                  if (var_51 < 0) {
                    var_12 = 0x1f;
                    if (var_51 < 0) {
                      for (; var_5 >> var_12 == 0; var_12 = var_12 - 1) {
                      }
                    }
                    var_12 = var_12 ^ 0x1f;
                  }
                  else {
                    var_12 = 0x1f;
                    if (var_51 != 0) {
                      for (; (type_7)var_51 >> var_12 == 0; var_12 = var_12 - 1) {
                      }
                    }
                    var_12 = (var_12 ^ 0x1f) + 0x20;
                  }
                  var_12 = 0x3c - var_12;
                  var_58 = (type_9)var_12 & 0x1f;
                  var_53 = (type_7)var_51 >> var_58 | var_5 << 0x20 - var_58;
                  if ((var_12 & 0x20) != 0) {
                    var_53 = var_5 >> ((type_9)var_12 & 0x1f);
                  }
                  if ((short)((short)var_12 * 10 + 0x1e + (&a_14957)[var_53 & 7]) < var_52) {
                    if (var_51 < 0) {
                      var_12 = 0x1f;
                      if (var_51 < 0) {
                        for (; var_5 >> var_12 == 0; var_12 = var_12 - 1) {
                        }
                      }
                      var_12 = var_12 ^ 0x1f;
                    }
                    else {
                      var_12 = 0x1f;
                      if (var_51 != 0) {
                        for (; (type_7)var_51 >> var_12 == 0; var_12 = var_12 - 1) {
                        }
                      }
                      var_12 = (var_12 ^ 0x1f) + 0x20;
                    }
                    var_12 = 0x3c - var_12;
                    var_52 = (short)var_12 * 10 + 0x28;
                    var_58 = (type_9)var_12 & 0x1f;
                    var_57 = (type_7)var_51 >> var_58 | var_5 << 0x20 - var_58;
                    if ((var_12 & 0x20) != 0) {
                      var_57 = var_5 >> ((type_9)var_12 & 0x1f);
                    }
LAB_000a1ca8:
                    var_52 = var_52 + -10 + (&a_14957)[var_57 & 7];
LAB_000a1cbb:
                    var_68->nSelectRow = var_52;
                  }
                }
              }
              if (var_49 != (type_16 *)0x0) {
                pVVar30 = (type_16 *)(var_2->nOp + -1);
                if (-1 < (int)var_49) {
                  pVVar30 = var_49;
                }
                pOVar27 = (type_14 *)&dummy_22674;
                if (var_2->db->mallocFailed == '\0') {
                  pOVar27 = var_2->aOp + (int)pVVar30;
                }
                pOVar27->p2 = var_2->nOp;
              }
              goto LAB_000a0ff8;
            }
          }
          else {
            if ((var_11 == 0x86) || (var_11 == 0x84)) {
              var_49 = (type_16 *)dest.iSDParm;
              if (dest.eDest != '\x01') {
                var_49 = (type_16 *)pParse->nTab;
                pParse->nTab = (int)var_49 + 1;
                var_47 = var_4(var_2,100,(int)var_49,0,(int)in_stack_ffffff18);
                var_68->addrOpenEphm[0] = var_47;
                var_28 = var_68;
                do {
                  var_23 = var_28;
                  var_28 = var_23->pNext;
                } while (var_28 != (type_2 *)0x0);
                puVar1 = &var_23->selFlags;
                *puVar1 = *puVar1 | 0x20;
              }
              var_51 = var_34(var_51._1_3_,1);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              local_2c._0_4_ = 0;
              local_38 = (type_7)var_49;
              var_48 = (type_2 *)var_37(pParse,var_67,(type_3 *)&var_51);
              if (var_48 != (type_2 *)0x0) goto LAB_000a0696;
              var_11 = var_68->op;
              var_9 = var_68->pLimit;
              var_68->pPrior = (type_2 *)0x0;
              var_68->pLimit = (type_11 *)0x0;
              if (var_11 == 0x86) {
                var_51 = var_34(var_51._1_3_,2);
                pcVar44 = "EXCEPT";
              }
              else {
                var_51 = var_34(var_51._1_3_,1);
                pcVar44 = "UNION ALL";
                if (var_11 != 0x85) {
                  pcVar44 = "INTERSECT";
                  if (var_11 != 0x87) {
                    pcVar44 = "UNION";
                  }
                }
              }
              pcVar13 = "%s USING TEMP B-TREE";
              pSVar43 = (type_3 *)&DAT_00000001;
              var_36(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);
              var_48 = (type_2 *)var_37(pParse,var_68,(type_3 *)&var_51);
              var_69 = var_68->pPrior;
              var_68->pOrderBy = (type_12 *)0x0;
              var_68->pPrior = var_67;
              if (var_68->op == 0x84) {
                LVar11 = var_42(var_68->nSelectRow,var_67->nSelectRow);
                var_68->nSelectRow = LVar11;
              }
              if (var_68->pLimit != (type_11 *)0x0) {
                var_33(psVar3,var_68->pLimit);
              }
              var_68->iLimit = 0;
              var_68->iOffset = 0;
              var_68->pLimit = var_9;
              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {
                pDVar33 = (type_17 *)(pParse->nLabel + -1);
                pSVar40 = (type_20 *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar40;
                var_7 = 0xa183f;
                var_32(pParse,var_68,(int)pDVar33);
                var_4(var_2,0x25,(int)var_49,(int)pDVar33,(int)pSVar43);
                var_47 = var_2->nOp;
                var_59((type_1 *)0x0,(type_2 *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,
                                (int)pcVar13,var_7);
                var_44(var_2,(int)pSVar40);
                var_4(var_2,5,(int)var_49,var_47,(int)pSVar43);
                var_44(var_2,(int)pDVar33);
LAB_000a16d1:
                var_4(var_2,0x74,(int)var_49,0,(int)pSVar43);
              }
LAB_000a0ff8:
              if (var_68->pNext == (type_2 *)0x0) {
                var_47 = pParse->addrExplain;
                if (var_47 != 0) {
                  pVVar30 = pParse->pVdbe;
                  if (var_47 < 0) {
                    var_47 = pVVar30->nOp + -1;
                  }
                  pOVar27 = (type_14 *)&dummy_22674;
                  if (pVVar30->db->mallocFailed == '\0') {
                    pOVar27 = pVVar30->aOp + var_47;
                  }
                  var_47 = pOVar27->p2;
                }
                pParse->addrExplain = var_47;
              }
              if (pParse->nErr == 0) goto LAB_000a0282;
              goto LAB_000a028c;
            }
            var_49 = (type_16 *)pParse->nTab;
            pParse->nTab = (int)var_49 + 2;
            var_47 = var_4(var_2,100,(int)var_49,0,(int)in_stack_ffffff18);
            var_68->addrOpenEphm[0] = var_47;
            var_28 = var_68;
            do {
              var_23 = var_28;
              var_28 = var_23->pNext;
            } while (var_28 != (type_2 *)0x0);
            puVar1 = &var_23->selFlags;
            *puVar1 = *puVar1 | 0x20;
            var_51 = var_34(var_51._1_3_,1);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            local_2c._0_4_ = 0;
            local_38 = (type_7)var_49;
            var_48 = (type_2 *)var_37(pParse,var_67,(type_3 *)&var_51);
            if (var_48 == (type_2 *)0x0) {
              var_5 = (int)var_49 + 1;
              var_47 = var_4(var_2,100,var_5,0,(int)in_stack_ffffff18);
              var_11 = var_68->op;
              var_9 = var_68->pLimit;
              var_68->addrOpenEphm[1] = var_47;
              var_68->pPrior = (type_2 *)0x0;
              var_68->pLimit = (type_11 *)0x0;
              pcVar44 = "EXCEPT";
              if ((var_11 != 0x86) && (pcVar44 = "INTERSECT", var_11 != 0x87)) {
                pcVar44 = "UNION ALL";
                if (var_11 != 0x85) {
                  pcVar44 = "UNION";
                }
              }
              var_47 = 1;
              local_38 = var_5;
              var_36(pParse,'\x01',"%s USING TEMP B-TREE",pcVar44);
              var_48 = (type_2 *)var_37(pParse,var_68,(type_3 *)&var_51);
              var_69 = var_68->pPrior;
              var_68->pPrior = var_67;
              if (var_67->nSelectRow < var_68->nSelectRow) {
                var_68->nSelectRow = var_67->nSelectRow;
              }
              if (var_68->pLimit != (type_11 *)0x0) {
                var_33(psVar3,var_68->pLimit);
              }
              var_68->pLimit = var_9;
              if (var_48 == (type_2 *)0x0) {
                pDVar33 = (type_17 *)(pParse->nLabel + -1);
                pSVar40 = (type_20 *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar40;
                var_7 = 0xa15e5;
                var_32(pParse,var_68,(int)pDVar33);
                var_4(var_2,0x25,(int)var_49,(int)pDVar33,var_47);
                if (pParse->nTempReg == '\0') {
                  var_61 = (type_3 *)(pParse->nMem + 1);
                  pParse->nMem = (int)var_61;
                }
                else {
                  var_58 = pParse->nTempReg - 1;
                  pParse->nTempReg = var_58;
                  var_61 = (type_3 *)pParse->aTempReg[var_58];
                }
                var_47 = var_4(var_2,0x7e,(int)var_49,(int)var_61,var_47);
                var_64 = 0;
                pSVar43 = var_61;
                var_60(var_2,0x1d,var_5,(int)pSVar40,(int)var_61,0);
                if (var_61 != (type_3 *)0x0) {
                  var_7 = 0xa1664;
                  var_62(pParse,(int)var_61);
                }
                var_59((type_1 *)0x0,(type_2 *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,var_64
                                ,var_7);
                var_44(var_2,(int)pSVar40);
                var_4(var_2,5,(int)var_49,var_47,(int)pSVar43);
                var_44(var_2,(int)pDVar33);
                var_4(var_2,0x74,var_5,0,(int)pSVar43);
                goto LAB_000a16d1;
              }
              goto LAB_000a0ff8;
            }
          }
LAB_000a0696:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          goto LAB_0009fe71;
        }
        pSVar38 = var_68->pSrc;
        var_69 = (type_2 *)var_68->pEList->nExpr;
        var_49 = pParse->pVdbe;
        var_48 = var_68->pPrior;
        if (var_68->pWin == (type_26 *)0x0) {
LAB_000a035e:
          var_47 = var_63((type_1 *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,
                                    (char *)in_stack_ffffff24);
          if (var_47 == 0) {
            pDVar33 = (type_17 *)(pParse->nLabel + -1);
            pParse->nLabel = (int)pDVar33;
            var_68->nSelectRow = 0x140;
            var_32(pParse,var_68,(int)pDVar33);
            var_9 = var_68->pLimit;
            var_47 = pSVar38->nSrc;
            var_68->pLimit = (type_11 *)0x0;
            var_7 = var_68->iLimit;
            var_68->iLimit = 0;
            var_64 = var_68->iOffset;
            var_68->iOffset = 0;
            var_29 = var_68->pOrderBy;
            if (var_47 < 1) {
LAB_000a0405:
              local_b4 = 0;
            }
            else {
              var_58 = pSVar38->a[0].fg.field_0x1;
              var_13 = 0;
              while ((var_58 & 0x20) == 0) {
                if (var_13 + 1 == var_47) goto LAB_000a0405;
                var_58 = *(type_9 *)((int)&pSVar38[1].a[var_13].regReturn + 1);
                var_13 = var_13 + 1;
              }
              local_b4 = pSVar38->a[var_13].iCursor;
            }
            var_5 = pParse->nTab;
            var_57 = var_5 + 1;
            pParse->nTab = var_57;
            var_61 = (type_3 *)(pParse->nMem + 1);
            pPVar45 = pParse;
            local_38 = var_5;
            if (var_68->op == 0x84) {
              if (var_29 != (type_12 *)0x0) {
                var_51 = var_34(var_51._1_3_,8);
                local_34 = 0;
                local_2c._4_4_ = (char *)0x0;
                local_30 = 0;
                pParse->nTab = var_5 + 2;
                local_2c._0_4_ = 0;
                pParse->nMem = (int)var_61;
                var_4(var_49,0x72,local_b4,(int)var_61,(int)var_69);
                var_47 = extraout_ECX_00;
                var_67 = var_69;
                goto LAB_000a049c;
              }
              var_51 = var_34(var_51._1_3_,6);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              pParse->nTab = var_5 + 2;
              local_2c._0_4_ = 0;
              pParse->nMem = (int)var_61;
              var_67 = var_69;
              var_4(var_49,0x72,local_b4,(int)var_61,(int)var_69);
              var_4(var_49,100,var_5,(int)var_69,(int)var_67);
LAB_000a04f4:
              if (var_57 != 0) {
                var_47 = var_4(var_49,100,var_57,0,(int)var_67);
                var_68->selFlags = var_68->selFlags | 0x20;
                var_68->addrOpenEphm[0] = var_47;
              }
              var_68->pOrderBy = (type_12 *)0x0;
              var_48->pNext = (type_2 *)0x0;
              pcVar44 = "SETUP";
              pSVar43 = (type_3 *)&DAT_00000001;
              var_36(pParse,'\x01',"SETUP");
              var_47 = var_37(pParse,var_48,(type_3 *)&var_51);
              var_48->pNext = var_68;
              if (var_47 == 0) {
                var_69 = (type_2 *)
                           var_4(var_49,0x25,var_5,(int)pDVar33,(int)pSVar43);
                iContinue = (type_1 *)var_4(var_49,0x80,local_b4,0,(int)pSVar43);
                if (var_29 == (type_12 *)0x0) goto LAB_000a1b0c;
                pPVar45 = iContinue;
                var_4(var_49,0x59,var_5,var_29->nExpr + 1,(int)var_61);
                pSVar43 = var_61;
LAB_000a191e:
                local_a8 = (type_3 *)&var_51;
                pPVar29 = (type_1 *)var_4(var_49,0x7a,var_5,0,(int)pSVar43);
                pSVar40 = (type_20 *)(pParse->nLabel + -1);
                pParse->nLabel = (int)pSVar40;
                if (0 < var_64) {
                  pSVar43 = (type_3 *)&DAT_00000001;
                  pPVar45 = pPVar29;
                  var_4(var_49,0x30,var_64,(int)pSVar40,1);
                  iContinue = pPVar29;
                }
                var_59((type_1 *)0x0,(type_2 *)0x0,(int)&dest,pSVar40,pDVar33,pSVar43,
                                (int)iContinue,(int)pPVar45);
                if (var_7 != 0) {
                  var_4(var_49,0x3b,var_7,(int)pDVar33,(int)pSVar43);
                }
                pVVar30 = var_49;
                var_44(var_49,(int)pSVar40);
                if ((var_68->selFlags & 8) == 0) {
                  var_68->pPrior = (type_2 *)0x0;
                  pcVar44 = (char *)0x1;
                  var_36(pParse,'\x01',"RECURSIVE STEP",pVVar30);
                  var_37(pParse,var_68,local_a8);
                  var_68->pPrior = var_48;
                }
                else {
                  pcVar44 = "recursive aggregate queries not supported";
                  var_30(pParse,"recursive aggregate queries not supported",pVVar30,pVVar30
                                 );
                }
                var_4(var_49,0xb,0,(int)var_69,(int)pcVar44);
                var_44(var_49,(int)pDVar33);
              }
            }
            else {
              if (var_29 != (type_12 *)0x0) {
                var_51 = var_34(var_51._1_3_,7);
                local_34 = 0;
                local_2c._4_4_ = (char *)0x0;
                local_30 = 0;
                local_2c._0_4_ = 0;
                pParse->nMem = (int)var_61;
                var_4(var_49,0x72,local_b4,(int)var_61,(int)var_69);
                var_57 = 0;
                var_47 = extraout_ECX;
                var_67 = var_69;
LAB_000a049c:
                pPVar45 = (type_1 *)0xa04a7;
                var_66 = var_19(pParse,var_68,var_47);
                var_47 = var_4(var_49,100,var_5,var_29->nExpr + 2,(int)var_67);
                var_45(var_49,var_47,(char *)var_66,-9);
                local_2c._8_4_ = var_29;
                goto LAB_000a04f4;
              }
              var_51 = var_34(var_51._1_3_,5);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              local_2c._0_4_ = 0;
              pParse->nMem = (int)var_61;
              var_67 = var_69;
              var_4(var_49,0x72,local_b4,(int)var_61,(int)var_69);
              var_4(var_49,100,var_5,(int)var_69,(int)var_67);
              pcVar44 = "SETUP";
              var_68->pOrderBy = (type_12 *)0x0;
              var_48->pNext = (type_2 *)0x0;
              pSVar43 = (type_3 *)&DAT_00000001;
              var_36(pParse,'\x01',"SETUP");
              var_47 = var_37(pParse,var_48,(type_3 *)&var_51);
              var_48->pNext = var_68;
              if (var_47 == 0) {
                var_69 = (type_2 *)
                           var_4(var_49,0x25,var_5,(int)pDVar33,(int)pSVar43);
                var_4(var_49,0x80,local_b4,0,(int)pSVar43);
LAB_000a1b0c:
                iContinue = (type_1 *)pcVar44;
                var_4(var_49,0x7e,var_5,(int)var_61,(int)pSVar43);
                goto LAB_000a191e;
              }
            }
            if (var_68->pOrderBy != (type_12 *)0x0) {
              var_65(pParse->db,var_68->pOrderBy);
            }
            var_68->pOrderBy = var_29;
            var_68->pLimit = var_9;
          }
        }
        else {
LAB_000a0251:
          var_30(pParse,"cannot use window functions in recursive queries");
        }
        if (pParse->nErr == 0) {
          var_69 = (type_2 *)0x0;
          var_48 = (type_2 *)0x0;
LAB_000a0282:
          if ((var_68->selFlags & 0x20) != 0) {
            var_21 = (type_6 *)var_68->pEList->nExpr;
            var_66 = var_22(psVar3,(int)var_21,1);
            if (var_66 == (type_15 *)0x0) {
              var_48 = (type_2 *)0x7;
            }
            else {
              if (0 < (int)var_21) {
                var_67 = (type_2 *)0x0;
                do {
                  var_26 = var_25(pParse,(type_2 *)&var_68->pEList,(int)var_68->pPrior,var_67);
                  var_66->aColl[(int)var_67] = var_26;
                  if (var_26 == (type_13 *)0x0) {
                    var_66->aColl[(int)var_67] = psVar3->pDfltColl;
                  }
                  var_67 = (type_2 *)&var_67->field_0x1;
                } while ((type_2 *)var_21 != var_67);
              }
              do {
                var_47 = 0;
                while (var_7 = var_68->addrOpenEphm[var_47], -1 < var_7) {
                  puVar8 = var_21;
                  if (var_2->db->mallocFailed == '\0') {
                    var_2->aOp[var_7].p2 = (int)var_21;
                    puVar8 = DAT_001075d8;
                  }
                  DAT_001075d8 = puVar8;
                  var_66->nRef = var_66->nRef + 1;
                  var_45(var_2,var_7,(char *)var_66,-9);
                  var_68->addrOpenEphm[var_47] = -1;
                  if (var_47 == 1) break;
                  var_47 = 1;
                }
                var_68 = var_68->pPrior;
              } while (var_68 != (type_2 *)0x0);
              var_40 = var_66->nRef - 1;
              var_66->nRef = var_40;
              if (var_40 == 0) {
                var_41(var_66->db,var_66);
              }
            }
          }
LAB_000a028c:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          if (var_69 != (type_2 *)0x0) {
            var_46(psVar3,var_69,1);
          }
          goto LAB_0009fe71;
        }
      }
      else {
        var_9 = var_68->pLimit;
        if (var_68->pWin != (type_26 *)0x0) {
          if ((var_5 & 0x2000) != 0) goto LAB_000a0251;
          goto LAB_0009ff43;
        }
        var_28 = var_68->pPrior;
        var_48 = var_68;
        if (var_28 == (type_2 *)0x0) {
LAB_000a122a:
          var_70 = (type_12 *)0x1;
          pcVar44 = "";
        }
        else {
          var_70 = (type_12 *)0x1;
          var_23 = var_28;
          do {
            var_48 = var_23;
            var_70 = (type_12 *)((int)var_70 + (type_7)(var_9 == (type_11 *)0x0));
            if (var_48->pWin != (type_26 *)0x0) {
              if ((var_5 & 0x2000) == 0) goto LAB_0009ff43;
              pSVar38 = var_68->pSrc;
              var_69 = (type_2 *)var_68->pEList->nExpr;
              var_49 = pParse->pVdbe;
              var_48 = var_28;
              goto LAB_000a035e;
            }
            var_23 = var_48->pPrior;
          } while (var_48->pPrior != (type_2 *)0x0);
          pcVar44 = "S";
          if (var_70 == (type_12 *)0x1) goto LAB_000a122a;
        }
        var_36(pParse,'\0',"SCAN %d CONSTANT ROW%s",var_70,pcVar44);
        if (var_9 == (type_11 *)0x0) {
          do {
            var_59((type_1 *)0x0,(type_2 *)0x0,(int)&dest,(type_20 *)&DAT_00000001,
                            (type_17 *)&DAT_00000001,(type_3 *)in_stack_ffffff18,
                            (int)in_stack_ffffff1c,(int)in_stack_ffffff20);
            var_48->nSelectRow = (type_10)var_70;
            var_48 = var_48->pNext;
          } while (var_48 != (type_2 *)0x0);
        }
        else {
          var_59((type_1 *)0x0,(type_2 *)0x0,(int)&dest,(type_20 *)&DAT_00000001,
                          (type_17 *)&DAT_00000001,(type_3 *)in_stack_ffffff18,
                          (int)in_stack_ffffff1c,(int)in_stack_ffffff20);
        }
      }
      var_48 = (type_2 *)0x0;
      pDest->iSdst = dest.iSdst;
      pDest->nSdst = dest.nSdst;
      goto LAB_0009fe71;
    }
    var_11 = var_68->op;
    if (var_11 == 0x86) {
      pcVar44 = "EXCEPT";
    }
    else if (var_11 == 0x87) {
      pcVar44 = "INTERSECT";
    }
    else {
      pcVar44 = "UNION";
      if (var_11 == 0x85) {
        pcVar44 = "UNION ALL";
        pcVar13 = "LIMIT";
        goto LAB_0009fe40;
      }
    }
    pcVar13 = "LIMIT";
  }
  else {
    var_11 = var_68->op;
    if (var_11 == 0x86) {
      pcVar44 = "EXCEPT";
    }
    else if (var_11 == 0x87) {
      pcVar44 = "INTERSECT";
    }
    else {
      if (var_11 != 0x85) {
        pcVar44 = "UNION";
        pcVar13 = "ORDER BY";
        goto LAB_0009fe40;
      }
      pcVar44 = "UNION ALL";
    }
    pcVar13 = "ORDER BY";
  }
LAB_0009fe40:
  var_30(pParse,"%s clause should come after %s not before",pcVar13,pcVar44);
  pDest->iSdst = dest.iSdst;
  pDest->nSdst = dest.nSdst;
  var_48 = (type_2 *)0x1;
LAB_0009fe71:
  if (local_2c._12_4_ == *(type_4 *)(var_1 + 0x14)) {
    return (type_7)var_48;
  }
                    /* WARNING: Subroutine does not return */
  var_71();
}


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

uint __regparm3 MASKED(undefined4 param_1,byte *param_2,undefined4 *param_3)

{
  ushort *puVar1;
  uint *puVar2;
  byte *pbVar3;
  uint uVar4;
  short sVar5;
  char cVar6;
  byte bVar7;
  undefined2 uVar8;
  short sVar9;
  undefined *puVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  int iVar15;
  undefined4 uVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  int iVar21;
  undefined4 uVar22;
  uint uVar23;
  short sVar24;
  char *pcVar25;
  int extraout_EDX;
  byte *pbVar26;
  int unaff_EBP;
  uint uVar27;
  int *piVar28;
  int iVar29;
  int in_GS_OFFSET;
  bool bVar30;
  undefined8 uVar31;
  byte *local_d0;
  int *local_cc;
  int *local_c8;
  int local_c4;
  int local_c0;
  uint local_bc;
  int *local_b0;
  undefined4 local_a8;
  int local_9c;
  int local_94;
  int local_90;
  undefined4 local_88;
  undefined4 local_74;
  int local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined1 local_58;
  int local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int *local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x9fdad;
  uVar31 = FUN_000d0ab3();
  pcVar25 = (char *)((ulonglong)uVar31 >> 0x20);
  piVar20 = (int *)uVar31;
  iVar19 = *(int *)(pcVar25 + 0x34);
  iVar15 = *piVar20;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_74 = *param_3;
  local_70 = param_3[1];
  local_6c = param_3[2];
  local_68 = param_3[3];
  local_64 = param_3[4];
  local_60 = param_3[5];
  local_5c = param_3[6];
  if (*(int *)(iVar19 + 0x30) == 0) {
    if (*(int *)(iVar19 + 0x3c) == 0) {
      local_c8 = (int *)piVar20[2];
      if (local_c8 == (int *)0x0) {
        local_c8 = (int *)FUN_00049b90();
      }
      if ((char)local_74 == '\f') {
        FUN_00049630(**(undefined4 **)(param_2 + 0x1c));
        local_74 = CONCAT31(local_74._1_3_,0xe);
      }
      uVar12 = *(uint *)(param_2 + 4);
      if ((uVar12 & 0x400) == 0) {
        if ((uVar12 & 0x2000) == 0) {
LAB_0009ff43:
          local_b0 = *(int **)(param_2 + 0x30);
          if (local_b0 != (int *)0x0) {
            iVar15 = *piVar20;
            piVar28 = (int *)piVar20[2];
            iVar19 = piVar20[0xe] + -1;
            iVar11 = piVar20[0xe] + -2;
            piVar20[0xe] = iVar11;
            uVar12 = (uint)*param_2;
            iVar29 = *(int *)(param_2 + 0x34);
            iVar21 = *local_b0;
            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&
               (local_cc = *(int **)(param_2 + 0x1c), 0 < *local_cc)) {
              uVar27 = 1;
              do {
                if (iVar21 < 1) {
                  if (iVar21 == 0) {
LAB_000a000e:
                    local_3c = 0;
                    local_38 = 0;
                    iVar13 = FUN_0002fd80();
                    if (iVar13 == 0) {
                      local_d0 = (byte *)0x7;
                      goto LAB_0009fe71;
                    }
                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;
                    *(uint *)(iVar13 + 8) = uVar27;
                    local_b0 = (int *)FUN_00054ef0();
                    *(int **)(param_2 + 0x30) = local_b0;
                    if (local_b0 == (int *)0x0) {
                      cVar6 = *(char *)(iVar15 + 0x4d);
                    }
                    else {
                      *(short *)(local_b0 + iVar21 * 4 + 4) = (short)uVar27;
                      cVar6 = *(char *)(iVar15 + 0x4d);
                      iVar21 = iVar21 + 1;
                    }
                    if (cVar6 != '\0') break;
                    local_cc = *(int **)(param_2 + 0x1c);
                  }
                }
                else if (*(ushort *)(local_b0 + 4) != uVar27) {
                  iVar13 = 0;
                  piVar14 = local_b0 + 1;
                  do {
                    iVar13 = iVar13 + 1;
                    if (iVar13 == iVar21) goto LAB_000a000e;
                    puVar1 = (ushort *)(piVar14 + 7);
                    piVar14 = piVar14 + 4;
                  } while (*puVar1 != uVar27);
                }
                uVar27 = uVar27 + 1;
              } while ((int)uVar27 <= *local_cc);
            }
            piVar14 = (int *)FUN_0002ef70();
            if (piVar14 != (int *)0x0) {
              *piVar14 = iVar21;
              if (0 < iVar21) {
                iVar15 = 0;
                do {
                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b0 + iVar15 + 4) - 1;
                  iVar15 = iVar15 + 4;
                } while (iVar21 * 4 != iVar15);
              }
              FUN_00050020();
            }
            *(int **)(param_2 + 0x30) = local_b0;
            uVar16 = FUN_0005f2e0();
            *(undefined4 *)(iVar29 + 0x30) = uVar16;
            if (uVar12 == 0x85) {
              local_b0 = (int *)0x0;
              local_94 = 0;
            }
            else {
              iVar15 = **(int **)(param_2 + 0x1c);
              local_94 = piVar20[0xb] + 1;
              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];
              FUN_00049630(local_94);
              local_b0 = (int *)FUN_0002fcc0();
              if ((local_b0 != (int *)0x0) && (0 < iVar15)) {
                iVar13 = 0;
                do {
                  iVar18 = *(int *)(param_2 + 0x34);
                  if ((iVar18 == 0) ||
                     (((*(int *)(iVar18 + 0x34) == 0 || (iVar17 = FUN_0004ff90(iVar13), iVar17 == 0)
                       ) && ((**(int **)(iVar18 + 0x1c) <= iVar13 ||
                             (iVar17 = FUN_0004f300(), iVar17 == 0)))))) {
                    if (iVar13 < **(int **)(param_2 + 0x1c)) {
                      iVar17 = FUN_0004f300();
                    }
                    else {
                      iVar17 = 0;
                    }
                  }
                  local_b0[iVar13 + 5] = iVar17;
                  *(undefined1 *)(local_b0[4] + iVar13) = 0;
                  iVar13 = iVar13 + 1;
                } while (iVar15 != iVar13);
              }
            }
            piVar14 = *(int **)(param_2 + 0x30);
            param_2[0x34] = 0;
            param_2[0x35] = 0;
            param_2[0x36] = 0;
            param_2[0x37] = 0;
            *(undefined4 *)(iVar29 + 0x38) = 0;
            if (((piVar14 != (int *)0x0) && (*(char *)(*piVar20 + 0x4d) == '\0')) &&
               (*(byte *)(piVar20 + 0x33) < 2)) {
              if (*(int *)(*piVar20 + 0x70) < *piVar14) {
                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,piVar14);
              }
              else {
                FUN_0005e800(unaff_EBP + 0x31e94);
              }
            }
            if (((*(int *)(iVar29 + 0x34) == 0) && (*(int **)(iVar29 + 0x30) != (int *)0x0)) &&
               ((*(char *)(*piVar20 + 0x4d) == '\0' && (*(byte *)(piVar20 + 0x33) < 2)))) {
              iVar15 = *(int *)(*piVar20 + 0x70);
              if (iVar15 < **(int **)(iVar29 + 0x30)) {
                FUN_0003d470(piVar20,unaff_EBP + 0x3462f,unaff_EBP + 0x31e94,iVar15);
              }
              else {
                FUN_0005e800(unaff_EBP + 0x31e94);
              }
            }
            FUN_00094cf0();
            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {
              local_9c = piVar20[0xb] + 1;
              local_90 = piVar20[0xb] + 2;
              piVar20[0xb] = local_90;
              FUN_00049630(local_9c);
              FUN_00049630(local_90);
            }
            else {
              local_90 = 0;
              local_9c = 0;
            }
            if (*(int *)(param_2 + 0x3c) != 0) {
              FUN_00053f30();
            }
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            local_58 = 0xd;
            local_50 = 0;
            local_44 = 0;
            local_4c = 0;
            iVar15 = piVar20[0xb];
            local_48 = 0;
            local_3c = CONCAT31(local_3c._1_3_,0xd);
            local_34 = 0;
            local_28 = 0;
            local_30 = 0;
            local_38 = iVar15 + 2;
            local_54 = iVar15 + 1;
            local_2c = 0;
            piVar20[0xb] = iVar15 + 4;
            bVar7 = *param_2;
            iVar13 = unaff_EBP + 0x31e87;
            if ((bVar7 != 0x86) && (iVar13 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {
              iVar13 = unaff_EBP + 0x31e73;
              if (bVar7 != 0x85) {
                iVar13 = unaff_EBP + 0x31e8e;
              }
            }
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32431,iVar13);
            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);
            *(int *)(iVar29 + 8) = local_9c;
            FUN_000496a0(piVar20,1,unaff_EBP + 0x3243c);
            FUN_0008d250();
            FUN_00049630(0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            if (iVar18 < 0) {
              iVar18 = piVar28[0x1a] + -1;
            }
            iVar13 = unaff_EBP + 0x67823;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar13 = piVar28[0x19] + iVar18 * 0x14;
            }
            *(int *)(iVar13 + 8) = piVar28[0x1a];
            iVar18 = FUN_000493f0(0,piVar28[0x1a] + 1);
            uVar16 = *(undefined4 *)(param_2 + 8);
            uVar22 = *(undefined4 *)(param_2 + 0xc);
            param_2[0xc] = 0;
            param_2[0xd] = 0;
            param_2[0xe] = 0;
            param_2[0xf] = 0;
            *(int *)(param_2 + 8) = local_90;
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32441);
            FUN_0008d250();
            *(undefined4 *)(param_2 + 0xc) = uVar22;
            *(undefined4 *)(param_2 + 8) = uVar16;
            FUN_00049630(0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            uVar16 = FUN_000684f0(&local_4c,&local_48,param_3,iVar15 + 3,local_94,local_b0,iVar19);
            local_88 = 0;
            if (uVar12 - 0x84 < 2) {
              local_88 = FUN_000684f0(&local_30,&local_2c,param_3,iVar15 + 4,local_94,local_b0,
                                      iVar19);
            }
            if ((local_b0 != (int *)0x0) &&
               (iVar15 = *local_b0, *local_b0 = iVar15 + -1, iVar15 + -1 == 0)) {
              FUN_00023410();
            }
            iVar15 = iVar19;
            local_94 = iVar19;
            if (1 < uVar12 - 0x86) {
              iVar15 = FUN_00049630(local_88);
              local_94 = FUN_00049630(iVar19);
              FUN_00049630(iVar15);
              uVar8 = FUN_00024680();
              *(undefined2 *)(param_2 + 2) = uVar8;
            }
            if (uVar12 == 0x87) {
              if (*(short *)(iVar29 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar29 + 2);
              }
              local_a8 = FUN_00049630(uVar16);
              FUN_00049630(iVar15);
              FUN_00049630(iVar11);
              local_b0 = (int *)iVar15;
            }
            else {
              local_b0 = (int *)FUN_00049630(uVar16);
              FUN_00049630(iVar19);
              FUN_00049630(local_b0);
              local_a8 = FUN_00049630(uVar16);
              FUN_00049630(iVar15);
              FUN_00049630(iVar11);
              if (uVar12 != 0x85) {
                local_a8 = FUN_00049630(iVar15);
                FUN_00049630(iVar11);
              }
            }
            iVar19 = piVar28[0x1a];
            if (uVar12 - 0x84 < 2) {
              FUN_00049630(local_88);
            }
            FUN_00049630(local_b0);
            FUN_00049630(iVar11);
            iVar15 = piVar28[0x1a] + -1;
            if (-1 < iVar18) {
              iVar15 = iVar18;
            }
            iVar11 = unaff_EBP + 0x67823;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar11 = piVar28[0x19] + iVar15 * 0x14;
            }
            *(int *)(iVar11 + 8) = piVar28[0x1a];
            FUN_00049630(local_94);
            FUN_00049630(local_b0);
            FUN_000330b0();
            FUN_00049630(0);
            FUN_000436c0(0xfffffff1);
            FUN_000493f0(local_30,iVar21);
            FUN_000436c0(0xfffffff7);
            if (0 < piVar28[0x1a]) {
              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;
            }
            FUN_000493f0(local_a8,iVar19);
            FUN_000330b0();
            if (*(int *)(param_2 + 0x34) != 0) {
              FUN_00053bb0();
            }
            *(int *)(param_2 + 0x34) = iVar29;
            *(byte **)(iVar29 + 0x38) = param_2;
            iVar19 = piVar20[0x36];
            if (iVar19 != 0) {
              piVar28 = (int *)piVar20[2];
              if (iVar19 < 0) {
                iVar19 = piVar28[0x1a] + -1;
              }
              iVar15 = unaff_EBP + 0x67823;
              if (*(char *)(*piVar28 + 0x4d) == '\0') {
                iVar15 = piVar28[0x19] + iVar19 * 0x14;
              }
              iVar19 = *(int *)(iVar15 + 8);
            }
            piVar20[0x36] = iVar19;
            local_d0 = (byte *)(uint)(piVar20[9] != 0);
            goto LAB_0009fe71;
          }
          if (*(int *)(iVar19 + 0x34) == 0) {
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32447);
            FUN_000496a0(piVar20,1,unaff_EBP + 0x32456);
          }
          bVar7 = *param_2;
          if (bVar7 == 0x85) {
            *(undefined4 *)(iVar19 + 8) = *(undefined4 *)(param_2 + 8);
            *(undefined4 *)(iVar19 + 0xc) = *(undefined4 *)(param_2 + 0xc);
            *(undefined4 *)(iVar19 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);
            local_d0 = (byte *)FUN_0008d250();
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            if (local_d0 == (byte *)0x0) {
              local_c4 = *(int *)(iVar19 + 8);
              uVar16 = *(undefined4 *)(iVar19 + 0xc);
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              *(int *)(param_2 + 8) = local_c4;
              *(undefined4 *)(param_2 + 0xc) = uVar16;
              if (local_c4 != 0) {
                uVar31 = FUN_00049630(0);
                uVar16 = (undefined4)((ulonglong)uVar31 >> 0x20);
                local_c4 = (int)uVar31;
                iVar29 = *(int *)(param_2 + 0xc);
                if (iVar29 != 0) {
                  FUN_000493f0(iVar29 + 1,iVar29,uVar16,uVar16);
                }
              }
              FUN_000496a0(piVar20,1,unaff_EBP + 0x31e73);
              local_d0 = (byte *)FUN_0008d250();
              local_c0 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar19;
              uVar8 = FUN_00024680();
              *(undefined2 *)(param_2 + 2) = uVar8;
              if (((*(int *)(iVar19 + 0x3c) != 0) && (iVar19 = FUN_00025130(), iVar19 != 0)) &&
                 (0 < (int)local_3c)) {
                sVar9 = *(short *)(param_2 + 2);
                uVar12 = (int)local_3c >> 0x1f;
                if ((int)local_3c < 8) {
                  if (local_3c == 1) {
                    if (0 < sVar9) {
                      sVar9 = 0;
                      goto LAB_000a1cbb;
                    }
                  }
                  else {
                    uVar23 = local_3c;
                    uVar27 = uVar12;
                    sVar5 = 0x28;
                    do {
                      sVar24 = sVar5;
                      uVar4 = uVar23 * 2;
                      if ((uVar27 & 0x7fffffff) != 0 || (int)uVar23 < 0) break;
                      uVar27 = 0;
                      uVar23 = uVar4;
                      sVar5 = sVar24 + -10;
                    } while (uVar4 < 8);
                    if ((short)(sVar24 + -0x14 + *(short *)(unaff_EBP + 0x38a1f + (uVar4 & 7) * 2))
                        < sVar9) {
                      sVar9 = 0x28;
                      local_bc = local_3c;
                      do {
                        sVar9 = sVar9 + -10;
                        bVar30 = CARRY4(local_bc,local_bc);
                        local_bc = local_bc * 2;
                        if (uVar12 * 2 + (uint)bVar30 != 0) break;
                        uVar12 = 0;
                      } while (local_bc < 8);
                      goto LAB_000a1ca8;
                    }
                  }
                }
                else {
                  if ((int)local_3c < 0) {
                    uVar27 = 0x1f;
                    if ((int)local_3c < 0) {
                      for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {
                      }
                    }
                    uVar27 = uVar27 ^ 0x1f;
                  }
                  else {
                    uVar27 = 0x1f;
                    if (local_3c != 0) {
                      for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {
                      }
                    }
                    uVar27 = (uVar27 ^ 0x1f) + 0x20;
                  }
                  uVar27 = 0x3c - uVar27;
                  bVar7 = (byte)uVar27 & 0x1f;
                  uVar23 = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;
                  if ((uVar27 & 0x20) != 0) {
                    uVar23 = uVar12 >> ((byte)uVar27 & 0x1f);
                  }
                  if ((short)((short)uVar27 * 10 + 0x1e +
                             *(short *)(unaff_EBP + 0x38a1f + (uVar23 & 7) * 2)) < sVar9) {
                    if ((int)local_3c < 0) {
                      uVar27 = 0x1f;
                      if ((int)local_3c < 0) {
                        for (; uVar12 >> uVar27 == 0; uVar27 = uVar27 - 1) {
                        }
                      }
                      uVar27 = uVar27 ^ 0x1f;
                    }
                    else {
                      uVar27 = 0x1f;
                      if (local_3c != 0) {
                        for (; local_3c >> uVar27 == 0; uVar27 = uVar27 - 1) {
                        }
                      }
                      uVar27 = (uVar27 ^ 0x1f) + 0x20;
                    }
                    uVar27 = 0x3c - uVar27;
                    sVar9 = (short)uVar27 * 10 + 0x28;
                    bVar7 = (byte)uVar27 & 0x1f;
                    local_bc = local_3c >> bVar7 | uVar12 << 0x20 - bVar7;
                    if ((uVar27 & 0x20) != 0) {
                      local_bc = uVar12 >> ((byte)uVar27 & 0x1f);
                    }
LAB_000a1ca8:
                    local_b0 = (int *)(unaff_EBP + 0x38a1f);
                    sVar9 = sVar9 + -10 + *(short *)((int)local_b0 + (local_bc & 7) * 2);
LAB_000a1cbb:
                    *(short *)(param_2 + 2) = sVar9;
                  }
                }
              }
              if (local_c4 != 0) {
                iVar19 = local_c8[0x1a] + -1;
                if (-1 < local_c4) {
                  iVar19 = local_c4;
                }
                iVar29 = unaff_EBP + 0x67823;
                if (*(char *)(*local_c8 + 0x4d) == '\0') {
                  iVar29 = iVar19 * 0x14 + local_c8[0x19];
                }
                *(int *)(iVar29 + 8) = local_c8[0x1a];
              }
              goto LAB_000a0ff8;
            }
          }
          else {
            if ((bVar7 == 0x86) || (bVar7 == 0x84)) {
              local_38 = local_70;
              if ((char)local_74 != '\x01') {
                iVar29 = piVar20[10];
                piVar20[10] = iVar29 + 1;
                uVar16 = FUN_00049630(0);
                *(undefined4 *)(param_2 + 0x14) = uVar16;
                pbVar3 = param_2;
                do {
                  pbVar26 = pbVar3;
                  pbVar3 = *(byte **)(pbVar26 + 0x38);
                } while (pbVar3 != (byte *)0x0);
                puVar2 = (uint *)(pbVar26 + 4);
                *puVar2 = *puVar2 | 0x20;
                local_38 = iVar29;
              }
              local_3c = CONCAT31(local_3c._1_3_,1);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              local_2c = 0;
              local_d0 = (byte *)FUN_0008d250();
              if (local_d0 != (byte *)0x0) goto LAB_000a0696;
              bVar7 = *param_2;
              uVar16 = *(undefined4 *)(param_2 + 0x3c);
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              param_2[0x3c] = 0;
              param_2[0x3d] = 0;
              param_2[0x3e] = 0;
              param_2[0x3f] = 0;
              if (bVar7 == 0x86) {
                local_3c = CONCAT31(local_3c._1_3_,2);
                iVar29 = unaff_EBP + 0x31e87;
              }
              else {
                local_3c = CONCAT31(local_3c._1_3_,1);
                iVar29 = unaff_EBP + 0x31e73;
                if (bVar7 != 0x85) {
                  iVar29 = unaff_EBP + 0x31e7d;
                  if (bVar7 != 0x87) {
                    iVar29 = unaff_EBP + 0x31e8e;
                  }
                }
              }
              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar29);
              local_d0 = (byte *)FUN_0008d250();
              local_c0 = *(int *)(param_2 + 0x34);
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              *(int *)(param_2 + 0x34) = iVar19;
              if (*param_2 == 0x84) {
                uVar8 = FUN_00024680();
                *(undefined2 *)(param_2 + 2) = uVar8;
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_00053f30();
              }
              param_2[8] = 0;
              param_2[9] = 0;
              param_2[10] = 0;
              param_2[0xb] = 0;
              param_2[0xc] = 0;
              param_2[0xd] = 0;
              param_2[0xe] = 0;
              param_2[0xf] = 0;
              *(undefined4 *)(param_2 + 0x3c) = uVar16;
              if (((char)local_74 != '\x01') && (*(char *)(iVar15 + 0x4d) == '\0')) {
                iVar19 = piVar20[0xe] + -1;
                iVar21 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar21;
                FUN_00094cf0();
                FUN_00049630(iVar19);
                iVar29 = local_c8[0x1a];
                FUN_000964a0(0,0,&local_74,iVar21,iVar19);
                FUN_000330b0();
                FUN_00049630(iVar29);
                FUN_000330b0();
LAB_000a16d1:
                FUN_00049630(0);
              }
LAB_000a0ff8:
              if (*(int *)(param_2 + 0x38) == 0) {
                iVar19 = piVar20[0x36];
                if (iVar19 != 0) {
                  piVar28 = (int *)piVar20[2];
                  if (iVar19 < 0) {
                    iVar19 = piVar28[0x1a] + -1;
                  }
                  iVar29 = unaff_EBP + 0x67823;
                  if (*(char *)(*piVar28 + 0x4d) == '\0') {
                    iVar29 = iVar19 * 0x14 + piVar28[0x19];
                  }
                  iVar19 = *(int *)(iVar29 + 8);
                }
                piVar20[0x36] = iVar19;
              }
              if (piVar20[9] == 0) goto LAB_000a0282;
              goto LAB_000a028c;
            }
            iVar29 = piVar20[10];
            piVar20[10] = iVar29 + 2;
            uVar16 = FUN_00049630(0);
            *(undefined4 *)(param_2 + 0x14) = uVar16;
            pbVar3 = param_2;
            do {
              pbVar26 = pbVar3;
              pbVar3 = *(byte **)(pbVar26 + 0x38);
            } while (pbVar3 != (byte *)0x0);
            puVar2 = (uint *)(pbVar26 + 4);
            *puVar2 = *puVar2 | 0x20;
            local_3c = CONCAT31(local_3c._1_3_,1);
            local_34 = 0;
            local_28 = 0;
            local_30 = 0;
            local_2c = 0;
            local_38 = iVar29;
            local_d0 = (byte *)FUN_0008d250();
            if (local_d0 == (byte *)0x0) {
              uVar22 = FUN_00049630(0);
              bVar7 = *param_2;
              uVar16 = *(undefined4 *)(param_2 + 0x3c);
              *(undefined4 *)(param_2 + 0x18) = uVar22;
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              param_2[0x3c] = 0;
              param_2[0x3d] = 0;
              param_2[0x3e] = 0;
              param_2[0x3f] = 0;
              iVar21 = unaff_EBP + 0x31e87;
              if ((bVar7 != 0x86) && (iVar21 = unaff_EBP + 0x31e7d, bVar7 != 0x87)) {
                iVar21 = unaff_EBP + 0x31e73;
                if (bVar7 != 0x85) {
                  iVar21 = unaff_EBP + 0x31e8e;
                }
              }
              local_38 = iVar29 + 1;
              FUN_000496a0(piVar20,1,unaff_EBP + 0x32469,iVar21);
              local_d0 = (byte *)FUN_0008d250();
              local_c0 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar19;
              if (*(short *)(iVar19 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar19 + 2);
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_00053f30();
              }
              *(undefined4 *)(param_2 + 0x3c) = uVar16;
              if (local_d0 == (byte *)0x0) {
                iVar19 = piVar20[0xe] + -1;
                iVar29 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar29;
                FUN_00094cf0();
                FUN_00049630(iVar19);
                if (*(char *)((int)piVar20 + 0x13) == '\0') {
                  iVar21 = piVar20[0xb] + 1;
                  piVar20[0xb] = iVar21;
                }
                else {
                  bVar7 = *(char *)((int)piVar20 + 0x13) - 1;
                  *(byte *)((int)piVar20 + 0x13) = bVar7;
                  iVar21 = piVar20[bVar7 + 0x26];
                }
                uVar16 = FUN_00049630(iVar21);
                FUN_00068470(iVar29,iVar21,0);
                if (iVar21 != 0) {
                  FUN_000254e0();
                }
                FUN_000964a0(0,0,&local_74,iVar29,iVar19);
                FUN_000330b0();
                FUN_00049630(uVar16);
                FUN_000330b0();
                FUN_00049630(0);
                goto LAB_000a16d1;
              }
              goto LAB_000a0ff8;
            }
          }
LAB_000a0696:
          param_3[3] = local_68;
          param_3[4] = local_64;
          goto LAB_0009fe71;
        }
        piVar28 = *(int **)(param_2 + 0x20);
        local_c0 = **(undefined4 **)(param_2 + 0x1c);
        local_d0 = *(byte **)(param_2 + 0x34);
        if (*(int *)(param_2 + 0x44) == 0) {
LAB_000a035e:
          iVar19 = FUN_0003d5a0(0,0);
          if (iVar19 == 0) {
            iVar13 = piVar20[0xe] + -1;
            piVar20[0xe] = iVar13;
            param_2[2] = 0x40;
            param_2[3] = 1;
            FUN_00094cf0();
            uVar16 = *(undefined4 *)(param_2 + 0x3c);
            iVar19 = *piVar28;
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            iVar29 = *(int *)(param_2 + 8);
            param_2[8] = 0;
            param_2[9] = 0;
            param_2[10] = 0;
            param_2[0xb] = 0;
            iVar21 = *(int *)(param_2 + 0xc);
            param_2[0xc] = 0;
            param_2[0xd] = 0;
            param_2[0xe] = 0;
            param_2[0xf] = 0;
            piVar14 = *(int **)(param_2 + 0x30);
            iVar11 = extraout_EDX;
            if (0 < iVar19) {
              iVar18 = 0;
              bVar7 = *(byte *)((int)piVar28 + 0x2d);
              while (((bVar7 & 0x20) == 0 && (iVar18 = iVar18 + 1, iVar18 != iVar19))) {
                iVar11 = iVar18 * 0x44;
                bVar7 = *(byte *)((int)piVar28 + iVar11 + 0x2d);
              }
            }
            local_38 = piVar20[10];
            local_bc = local_38 + 1;
            piVar20[10] = local_bc;
            iVar19 = piVar20[0xb] + 1;
            if (*param_2 == 0x84) {
              if (piVar14 != (int *)0x0) {
                local_3c = CONCAT31(local_3c._1_3_,8);
                local_34 = 0;
                local_28 = 0;
                local_30 = 0;
                piVar20[10] = local_38 + 2;
                local_2c = 0;
                piVar20[0xb] = iVar19;
                FUN_000493f0(iVar19,local_c0,iVar11,iVar11);
                goto LAB_000a049c;
              }
              local_3c = CONCAT31(local_3c._1_3_,6);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              piVar20[10] = local_38 + 2;
              local_2c = 0;
              piVar20[0xb] = iVar19;
              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);
              FUN_00049630(local_c0);
LAB_000a04f4:
              if (local_bc != 0) {
                uVar22 = FUN_00049630(0);
                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;
                *(undefined4 *)(param_2 + 0x14) = uVar22;
              }
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              local_d0[0x38] = 0;
              local_d0[0x39] = 0;
              local_d0[0x3a] = 0;
              local_d0[0x3b] = 0;
              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);
              iVar11 = FUN_0008d250();
              *(byte **)(local_d0 + 0x38) = param_2;
              if (iVar11 == 0) {
                local_c0 = FUN_00049630(iVar13);
                uVar22 = FUN_00049630(0);
                if (piVar14 == (int *)0x0) goto LAB_000a1b0c;
                FUN_000493f0(*piVar14 + 1,iVar19,uVar22,uVar22);
LAB_000a191e:
                uVar22 = FUN_00049630(0);
                iVar19 = piVar20[0xe] + -1;
                piVar20[0xe] = iVar19;
                if (0 < iVar21) {
                  FUN_000493f0(iVar19,1,uVar22,uVar22);
                }
                FUN_000964a0(0,0,&local_74,iVar19,iVar13);
                if (iVar29 != 0) {
                  FUN_00049630(iVar13);
                }
                uVar22 = FUN_000330b0();
                if ((param_2[4] & 8) == 0) {
                  param_2[0x34] = 0;
                  param_2[0x35] = 0;
                  param_2[0x36] = 0;
                  param_2[0x37] = 0;
                  FUN_000496a0(piVar20,1,unaff_EBP + 0x32422,uVar22);
                  FUN_0008d250();
                  *(byte **)(param_2 + 0x34) = local_d0;
                }
                else {
                  FUN_0003d470(piVar20,&UNK_00034dc7 + unaff_EBP,uVar22,uVar22);
                }
                FUN_00049630(local_c0);
                FUN_000330b0();
              }
            }
            else {
              if (piVar14 != (int *)0x0) {
                local_3c = CONCAT31(local_3c._1_3_,7);
                local_34 = 0;
                local_28 = 0;
                local_30 = 0;
                local_2c = 0;
                piVar20[0xb] = iVar19;
                FUN_000493f0(iVar19,local_c0);
                local_bc = 0;
LAB_000a049c:
                FUN_00050020();
                FUN_00049630(*piVar14 + 2);
                FUN_000436c0(0xfffffff7);
                local_24 = piVar14;
                goto LAB_000a04f4;
              }
              local_3c = CONCAT31(local_3c._1_3_,5);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              local_2c = 0;
              piVar20[0xb] = iVar19;
              FUN_000493f0(iVar19,local_c0,piVar20,piVar20);
              FUN_00049630(local_c0);
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              local_d0[0x38] = 0;
              local_d0[0x39] = 0;
              local_d0[0x3a] = 0;
              local_d0[0x3b] = 0;
              FUN_000496a0(piVar20,1,unaff_EBP + 0x3241c);
              iVar11 = FUN_0008d250();
              *(byte **)(local_d0 + 0x38) = param_2;
              if (iVar11 == 0) {
                local_c0 = FUN_00049630(iVar13);
                FUN_00049630(0);
LAB_000a1b0c:
                FUN_00049630(iVar19);
                goto LAB_000a191e;
              }
            }
            if (*(int *)(param_2 + 0x30) != 0) {
              FUN_00054000();
            }
            *(int **)(param_2 + 0x30) = piVar14;
            *(undefined4 *)(param_2 + 0x3c) = uVar16;
          }
        }
        else {
LAB_000a0251:
          FUN_0003d470(piVar20,&UNK_00034d93 + unaff_EBP);
        }
        if (piVar20[9] == 0) {
          local_c0 = 0;
          local_d0 = (byte *)0x0;
LAB_000a0282:
          if ((param_2[4] & 0x20) != 0) {
            iVar19 = **(int **)(param_2 + 0x1c);
            piVar20 = (int *)FUN_0002fcc0();
            if (piVar20 == (int *)0x0) {
              local_d0 = (byte *)0x7;
            }
            else {
              if (0 < iVar19) {
                iVar29 = 0;
                do {
                  iVar21 = FUN_0004ff90(iVar29);
                  piVar20[iVar29 + 5] = iVar21;
                  if (iVar21 == 0) {
                    piVar20[iVar29 + 5] = *(int *)(iVar15 + 8);
                  }
                  iVar29 = iVar29 + 1;
                } while (iVar19 != iVar29);
              }
              do {
                iVar15 = 0;
                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {
                  if (*(char *)(*local_c8 + 0x4d) == '\0') {
                    *(int *)(local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14 + 8) =
                         iVar19;
                  }
                  else {
                    *(int *)(unaff_EBP + 0x6782b) = iVar19;
                  }
                  *piVar20 = *piVar20 + 1;
                  FUN_000436c0(0xfffffff7);
                  pbVar3 = param_2 + iVar15 * 4 + 0x14;
                  pbVar3[0] = 0xff;
                  pbVar3[1] = 0xff;
                  pbVar3[2] = 0xff;
                  pbVar3[3] = 0xff;
                  if (iVar15 == 1) break;
                  iVar15 = 1;
                }
                param_2 = *(byte **)(param_2 + 0x34);
              } while (param_2 != (byte *)0x0);
              iVar19 = *piVar20;
              *piVar20 = iVar19 + -1;
              if (iVar19 + -1 == 0) {
                FUN_00023410();
              }
            }
          }
LAB_000a028c:
          param_3[3] = local_68;
          param_3[4] = local_64;
          if (local_c0 != 0) {
            FUN_00053bb0();
          }
          goto LAB_0009fe71;
        }
      }
      else {
        iVar29 = *(int *)(param_2 + 0x3c);
        if (*(int *)(param_2 + 0x44) != 0) {
          if ((uVar12 & 0x2000) != 0) goto LAB_000a0251;
          goto LAB_0009ff43;
        }
        pbVar3 = *(byte **)(param_2 + 0x34);
        local_d0 = param_2;
        if (pbVar3 == (byte *)0x0) {
LAB_000a122a:
          local_cc = (int *)0x1;
          iVar19 = unaff_EBP + 0x327e3;
        }
        else {
          local_cc = (int *)0x1;
          pbVar26 = pbVar3;
          do {
            local_d0 = pbVar26;
            local_cc = (int *)((int)local_cc + (uint)(iVar29 == 0));
            if (*(int *)(local_d0 + 0x44) != 0) {
              if ((uVar12 & 0x2000) == 0) goto LAB_0009ff43;
              piVar28 = *(int **)(param_2 + 0x20);
              local_c0 = **(undefined4 **)(param_2 + 0x1c);
              local_d0 = pbVar3;
              goto LAB_000a035e;
            }
            pbVar26 = *(byte **)(local_d0 + 0x34);
          } while (*(byte **)(local_d0 + 0x34) != (byte *)0x0);
          iVar19 = unaff_EBP + 0x329e1;
          if (local_cc == (int *)0x1) goto LAB_000a122a;
        }
        FUN_000496a0(piVar20,0,unaff_EBP + 0x32405,local_cc,iVar19);
        if (iVar29 == 0) {
          do {
            FUN_000964a0(0,0,&local_74,1,1);
            *(short *)(local_d0 + 2) = (short)local_cc;
            local_d0 = *(byte **)(local_d0 + 0x38);
          } while (local_d0 != (byte *)0x0);
        }
        else {
          FUN_000964a0(0,0,&local_74,1,1);
        }
      }
      local_d0 = (byte *)0x0;
      param_3[3] = local_68;
      param_3[4] = local_64;
      goto LAB_0009fe71;
    }
    cVar6 = *pcVar25;
    if (cVar6 == -0x7a) {
      iVar19 = unaff_EBP + 0x31e87;
    }
    else if (cVar6 == -0x79) {
      iVar19 = unaff_EBP + 0x31e7d;
    }
    else {
      iVar19 = unaff_EBP + 0x31e8e;
      if (cVar6 == -0x7b) {
        iVar19 = unaff_EBP + 0x31e73;
        puVar10 = (undefined *)(unaff_EBP + 0x323ff);
        goto LAB_0009fe40;
      }
    }
    puVar10 = (undefined *)(unaff_EBP + 0x323ff);
  }
  else {
    cVar6 = *pcVar25;
    if (cVar6 == -0x7a) {
      iVar19 = unaff_EBP + 0x31e87;
    }
    else if (cVar6 == -0x79) {
      iVar19 = unaff_EBP + 0x31e7d;
    }
    else {
      if (cVar6 != -0x7b) {
        iVar19 = unaff_EBP + 0x31e8e;
        puVar10 = &UNK_0003228a + unaff_EBP;
        goto LAB_0009fe40;
      }
      iVar19 = unaff_EBP + 0x31e73;
    }
    puVar10 = &UNK_0003228a + unaff_EBP;
  }
LAB_0009fe40:
  FUN_0003d470(piVar20,&UNK_00034d67 + unaff_EBP,puVar10,iVar19);
  param_3[3] = local_68;
  param_3[4] = local_64;
  local_d0 = (byte *)0x1;
LAB_0009fe71:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (uint)local_d0;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000d1450();
}

