
/* 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;
  u8 uVar2;
  sqlite3 *psVar3;
  undefined1 *puVar4;
  uint uVar5;
  Select *pSVar6;
  short sVar7;
  byte bVar8;
  LogEst LVar9;
  short sVar10;
  char *pcVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  Expr *pEVar15;
  int *zP4;
  ExprList *pEVar16;
  CollSeq *pCVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  u32 uVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  Op *pOVar25;
  KeyInfo *pKVar26;
  char *pcVar27;
  Vdbe *pVVar28;
  uint uVar29;
  short sVar30;
  DistinctCtx *pDVar31;
  int extraout_ECX;
  Parse *extraout_ECX_00;
  int extraout_ECX_01;
  ExprList_item *pEVar32;
  uint uVar33;
  Select *pSVar34;
  SrcList *pSVar35;
  Select *pSVar36;
  Select *pSVar37;
  SelectDest *pSVar38;
  SortCtx *pSVar39;
  int in_GS_OFFSET;
  bool bVar40;
  SelectDest *in_stack_ffffff18;
  SelectDest *pDest_00;
  char *in_stack_ffffff1c;
  char *in_stack_ffffff20;
  Parse *pPVar41;
  Parse *iBreak;
  Select *in_stack_ffffff24;
  undefined4 in_stack_ffffff28;
  Select *local_d0;
  Vdbe *local_c8;
  Vdbe *local_c4;
  uint local_c0;
  uint local_bc;
  ExprList *local_b4;
  int local_b0;
  SelectDest *local_ac;
  KeyInfo *local_a4;
  int local_a0;
  int local_9c;
  KeyInfo *local_98;
  int local_94;
  int local_90;
  int local_80;
  SelectDest dest;
  SelectDest destA;
  int nLimit;
  uint local_38;
  int local_34;
  int local_30;
  undefined1 local_2c [20];
  Token x;
  
  x.n = 0x81ced;
  pSVar37 = 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 (pSVar37->pOrderBy == (ExprList *)0x0) {
    if (pSVar37->pLimit == (Expr *)0x0) {
      local_c8 = pParse->pVdbe;
      if (local_c8 == (Vdbe *)0x0) {
        in_stack_ffffff20 = (char *)0x82be9;
        local_c8 = sqlite3GetVdbe(pParse);
      }
      if (dest.eDest == '\f') {
        in_stack_ffffff18 = (SelectDest *)0x0;
        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);
        dest.eDest = '\x0e';
      }
      uVar13 = p->selFlags;
      if ((uVar13 & 0x400) == 0) {
        if ((uVar13 & 0x2000) == 0) {
LAB_00081e83:
          local_b4 = p->pOrderBy;
          if (local_b4 != (ExprList *)0x0) {
            psVar3 = pParse->db;
            pVVar28 = pParse->pVdbe;
            iVar22 = pParse->nLabel + -1;
            iVar12 = pParse->nLabel + -2;
            pParse->nLabel = iVar12;
            pSVar37 = p->pPrior;
            uVar13 = (uint)p->op;
            local_b0 = local_b4->nExpr;
            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {
              uVar33 = 1;
              do {
                if (local_b0 < 1) {
                  if (local_b0 == 0) {
LAB_00081f4a:
                    nLimit = 0;
                    local_38 = 0;
                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);
                    if (pEVar15 == (Expr *)0x0) {
                      local_d0 = (Select *)0x7;
                      goto LAB_00081db1;
                    }
                    pEVar15->flags = pEVar15->flags | 0x400;
                    (pEVar15->u).iValue = uVar33;
                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);
                    p->pOrderBy = local_b4;
                    if (local_b4 != (ExprList *)0x0) {
                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;
                      local_b0 = local_b0 + 1;
                    }
                  }
                }
                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {
                  iVar14 = 0;
                  pEVar32 = local_b4->a;
                  do {
                    iVar14 = iVar14 + 1;
                    if (iVar14 == local_b0) goto LAB_00081f4a;
                    iVar23 = (int)(pEVar32 + 1);
                    pEVar32 = pEVar32 + 1;
                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);
                }
                uVar33 = uVar33 + 1;
              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));
            }
            local_ac = (SelectDest *)&nLimit;
            zP4 = (int *)sqlite3DbMallocRawNN(psVar3,CONCAT44(in_stack_ffffff28,in_stack_ffffff24));
            local_98 = (KeyInfo *)0x0;
            if (zP4 != (int *)0x0) {
              *zP4 = local_b0;
              if (0 < local_b0) {
                iVar14 = 0;
                do {
                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;
                  iVar14 = iVar14 + 4;
                } while (local_b0 * 4 != iVar14);
              }
              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);
            }
            p->pOrderBy = local_b4;
            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);
            pSVar37->pOrderBy = pEVar16;
            if (uVar13 == 0x85) {
              local_a4 = (KeyInfo *)0x0;
              local_90 = 0;
            }
            else {
              puVar4 = (undefined1 *)p->pEList->nExpr;
              local_90 = pParse->nMem + 1;
              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);
              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);
              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);
              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {
                pSVar34 = (Select *)0x0;
                do {
                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);
                  local_a4->aColl[(int)pSVar34] = pCVar17;
                  local_a4->aSortFlags[(int)pSVar34] = '\0';
                  pSVar34 = (Select *)&pSVar34->field_0x1;
                } while ((Select *)puVar4 != pSVar34);
              }
            }
            p->pPrior = (Select *)0x0;
            pEVar16 = p->pOrderBy;
            pSVar37->pNext = (Select *)0x0;
            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");
            if (pSVar37->pPrior == (Select *)0x0) {
              sqlite3ResolveOrderGroupBy
                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");
            }
            computeLimitRegisters(pParse,p,iVar22);
            iVar14 = p->iLimit;
            if ((uVar13 == 0x85) && (iVar14 != 0)) {
              local_9c = pParse->nMem + 1;
              local_94 = pParse->nMem + 2;
              pParse->nMem = local_94;
              if (p->iOffset != 0) {
                iVar14 = p->iOffset + 1;
              }
              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);
              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);
            }
            else {
              local_94 = 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;
            iVar18 = pParse->nMem;
            destA.nSdst = 0;
            nLimit = CONCAT31(nLimit._1_3_,0xd);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            uVar33 = iVar18 + 2;
            iVar14 = iVar18 + 1;
            local_2c._0_4_ = 0;
            iVar23 = iVar18 + 3;
            iVar18 = iVar18 + 4;
            pParse->nMem = iVar18;
            uVar2 = p->op;
            pSVar38 = (SelectDest *)"EXCEPT";
            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {
              pSVar38 = (SelectDest *)"UNION ALL";
              if (uVar2 != 0x85) {
                pSVar38 = (SelectDest *)"UNION";
              }
            }
            destA.iSDParm = iVar14;
            local_38 = uVar33;
            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");
            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);
            pSVar37->iLimit = local_9c;
            sqlite3VdbeExplain(pParse,'\x01',"LEFT");
            sqlite3Select(pParse,pSVar37,&destA);
            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);
            pPVar41 = pVVar28->pParse;
            pPVar41->nTempReg = '\0';
            pPVar41->nRangeReg = 0;
            if (iVar19 < 0) {
              iVar19 = pVVar28->nOp + -1;
            }
            pOVar25 = (Op *)&dummy_22674;
            if (pVVar28->db->mallocFailed == '\0') {
              pOVar25 = pVVar28->aOp + iVar19;
            }
            pOVar25->p2 = pVVar28->nOp;
            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);
            iVar19 = p->iLimit;
            iVar24 = p->iOffset;
            p->iOffset = 0;
            p->iLimit = local_94;
            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");
            sqlite3Select(pParse,p,local_ac);
            p->iOffset = iVar24;
            p->iLimit = iVar19;
            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);
            pPVar41 = pVVar28->pParse;
            pPVar41->nTempReg = '\0';
            pPVar41->nRangeReg = 0;
            iVar19 = generateOutputSubroutine
                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,
                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);
            local_80 = 0;
            if (uVar13 - 0x84 < 2) {
              local_80 = generateOutputSubroutine
                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,
                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);
            }
            if ((local_a4 != (KeyInfo *)0x0) &&
               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {
              sqlite3KeyInfoUnref(local_a4);
            }
            iVar24 = iVar22;
            local_90 = iVar22;
            if (1 < uVar13 - 0x86) {
              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);
              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);
              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);
              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);
              p->nSelectRow = LVar9;
            }
            if (uVar13 == 0x87) {
              if (pSVar37->nSelectRow < p->nSelectRow) {
                p->nSelectRow = pSVar37->nSelectRow;
              }
              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);
              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);
              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);
              local_a0 = (int)local_a4 + 1;
              local_ac = (SelectDest *)iVar24;
            }
            else {
              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);
              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);
              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);
              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);
              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);
              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);
              local_a4 = (KeyInfo *)local_a0;
              if (uVar13 != 0x85) {
                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);
                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);
              }
            }
            iVar23 = pVVar28->nOp;
            if (uVar13 - 0x84 < 2) {
              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);
            }
            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);
            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);
            iVar18 = pVVar28->nOp + -1;
            if (-1 < iVar20) {
              iVar18 = iVar20;
            }
            pOVar25 = (Op *)&dummy_22674;
            if (pVVar28->db->mallocFailed == '\0') {
              pOVar25 = pVVar28->aOp + iVar18;
            }
            pOVar25->p2 = pVVar28->nOp;
            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);
            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);
            sqlite3VdbeResolveLabel(pVVar28,iVar12);
            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);
            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);
            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);
            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);
            if (0 < pVVar28->nOp) {
              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;
            }
            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);
            sqlite3VdbeResolveLabel(pVVar28,iVar22);
            if (p->pPrior != (Select *)0x0) {
              clearSelect(psVar3,p->pPrior,1);
            }
            p->pPrior = pSVar37;
            pSVar37->pNext = p;
            iVar22 = pParse->addrExplain;
            if (iVar22 != 0) {
              pVVar28 = pParse->pVdbe;
              if (iVar22 < 0) {
                iVar22 = pVVar28->nOp + -1;
              }
              pOVar25 = (Op *)&dummy_22674;
              if (pVVar28->db->mallocFailed == '\0') {
                pOVar25 = pVVar28->aOp + iVar22;
              }
              iVar22 = pOVar25->p2;
            }
            pParse->addrExplain = iVar22;
            local_d0 = (Select *)(uint)(pParse->nErr != 0);
            goto LAB_00081db1;
          }
          if (pSVar37->pPrior == (Select *)0x0) {
            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");
            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");
          }
          uVar2 = p->op;
          if (uVar2 == 0x85) {
            pSVar37->iLimit = p->iLimit;
            pSVar37->iOffset = p->iOffset;
            pSVar37->pLimit = p->pLimit;
            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);
            p->pLimit = (Expr *)0x0;
            if (local_d0 == (Select *)0x0) {
              local_c0 = pSVar37->iLimit;
              iVar22 = pSVar37->iOffset;
              p->pPrior = (Select *)0x0;
              p->iLimit = local_c0;
              p->iOffset = iVar22;
              if (local_c0 != 0) {
                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);
                iVar22 = p->iOffset;
                if (iVar22 != 0) {
                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);
                }
              }
              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");
              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);
              local_c4 = (Vdbe *)p->pPrior;
              LVar9 = pSVar37->nSelectRow;
              p->pPrior = pSVar37;
              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);
              p->nSelectRow = LVar9;
              if (((pSVar37->pLimit != (Expr *)0x0) &&
                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&
                 (0 < nLimit)) {
                sVar10 = p->nSelectRow;
                uVar13 = nLimit >> 0x1f;
                if (nLimit < 8) {
                  if (nLimit == 1) {
                    if (0 < sVar10) {
                      sVar10 = 0;
                      goto LAB_00083ad6;
                    }
                  }
                  else {
                    uVar29 = nLimit;
                    uVar33 = uVar13;
                    sVar7 = 0x28;
                    do {
                      sVar30 = sVar7;
                      uVar5 = uVar29 * 2;
                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;
                      uVar33 = 0;
                      uVar29 = uVar5;
                      sVar7 = sVar30 + -10;
                    } while (uVar5 < 8);
                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {
                      sVar10 = 0x28;
                      local_bc = nLimit;
                      do {
                        sVar10 = sVar10 + -10;
                        bVar40 = CARRY4(local_bc,local_bc);
                        local_bc = local_bc * 2;
                        if (uVar13 * 2 + (uint)bVar40 != 0) break;
                        uVar13 = 0;
                      } while (local_bc < 8);
                      goto LAB_00083ac3;
                    }
                  }
                }
                else {
                  if (nLimit < 0) {
                    uVar33 = 0x1f;
                    if (nLimit < 0) {
                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {
                      }
                    }
                    uVar33 = uVar33 ^ 0x1f;
                  }
                  else {
                    uVar33 = 0x1f;
                    if (nLimit != 0) {
                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {
                      }
                    }
                    uVar33 = (uVar33 ^ 0x1f) + 0x20;
                  }
                  uVar33 = 0x3c - uVar33;
                  bVar8 = (byte)uVar33 & 0x1f;
                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;
                  if ((uVar33 & 0x20) != 0) {
                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);
                  }
                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <
                      sVar10) {
                    if (nLimit < 0) {
                      uVar33 = 0x1f;
                      if (nLimit < 0) {
                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {
                        }
                      }
                      uVar33 = uVar33 ^ 0x1f;
                    }
                    else {
                      uVar33 = 0x1f;
                      if (nLimit != 0) {
                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {
                        }
                      }
                      uVar33 = (uVar33 ^ 0x1f) + 0x20;
                    }
                    uVar33 = 0x3c - uVar33;
                    sVar10 = (short)uVar33 * 10 + 0x28;
                    bVar8 = (byte)uVar33 & 0x1f;
                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;
                    if ((uVar33 & 0x20) != 0) {
                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);
                    }
LAB_00083ac3:
                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);
LAB_00083ad6:
                    p->nSelectRow = sVar10;
                  }
                }
              }
              if (local_c0 != 0) {
                uVar13 = local_c8->nOp + -1;
                if (-1 < (int)local_c0) {
                  uVar13 = local_c0;
                }
                pOVar25 = (Op *)&dummy_22674;
                if (local_c8->db->mallocFailed == '\0') {
                  pOVar25 = local_c8->aOp + uVar13;
                }
                pOVar25->p2 = local_c8->nOp;
              }
              goto LAB_00082ed0;
            }
          }
          else {
            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {
              if (dest.eDest == '\x01') {
                local_c0 = dest.iSDParm;
              }
              else {
                local_c0 = pParse->nTab;
                pParse->nTab = local_c0 + 1;
                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);
                p->addrOpenEphm[0] = iVar22;
                pSVar34 = p;
                do {
                  pSVar36 = pSVar34;
                  pSVar34 = pSVar36->pNext;
                } while (pSVar34 != (Select *)0x0);
                puVar1 = &pSVar36->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 = local_c0;
              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);
              if (local_d0 != (Select *)0x0) goto LAB_00082b00;
              uVar2 = p->op;
              pEVar15 = p->pLimit;
              p->pPrior = (Select *)0x0;
              p->pLimit = (Expr *)0x0;
              if (uVar2 == 0x86) {
                nLimit = CONCAT31(nLimit._1_3_,2);
                pcVar27 = "EXCEPT";
              }
              else {
                nLimit = CONCAT31(nLimit._1_3_,1);
                pcVar27 = "UNION ALL";
                if (uVar2 != 0x85) {
                  pcVar27 = "INTERSECT";
                  if (uVar2 != 0x87) {
                    pcVar27 = "UNION";
                  }
                }
              }
              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);
              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);
              local_c4 = (Vdbe *)p->pPrior;
              p->pOrderBy = (ExprList *)0x0;
              p->pPrior = pSVar37;
              if (p->op == 0x84) {
                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);
                p->nSelectRow = LVar9;
              }
              if (p->pLimit != (Expr *)0x0) {
                sqlite3ExprDeleteNN(psVar3,p->pLimit);
              }
              p->iLimit = 0;
              p->iOffset = 0;
              p->pLimit = pEVar15;
              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {
                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);
                pSVar39 = (SortCtx *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar39;
                pPVar41 = pParse;
                computeLimitRegisters(pParse,p,(int)pDVar31);
                pSVar38 = (SelectDest *)0x0;
                iBreak = pPVar41;
                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);
                iVar22 = local_c8->nOp;
                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,
                                (int)pPVar41,(int)iBreak);
                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);
                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);
                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);
LAB_00083517:
                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);
              }
LAB_00082ed0:
              if (p->pNext == (Select *)0x0) {
                iVar22 = pParse->addrExplain;
                if (iVar22 != 0) {
                  pVVar28 = pParse->pVdbe;
                  if (iVar22 < 0) {
                    iVar22 = pVVar28->nOp + -1;
                  }
                  pOVar25 = (Op *)&dummy_22674;
                  if (pVVar28->db->mallocFailed == '\0') {
                    pOVar25 = pVVar28->aOp + iVar22;
                  }
                  iVar22 = pOVar25->p2;
                }
                pParse->addrExplain = iVar22;
              }
              if (pParse->nErr == 0) goto LAB_00082732;
              goto LAB_0008273c;
            }
            local_c0 = pParse->nTab;
            pParse->nTab = local_c0 + 2;
            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);
            p->addrOpenEphm[0] = iVar22;
            pSVar34 = p;
            do {
              pSVar36 = pSVar34;
              pSVar34 = pSVar36->pNext;
            } while (pSVar34 != (Select *)0x0);
            puVar1 = &pSVar36->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 = local_c0;
            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);
            if (local_d0 == (Select *)0x0) {
              uVar13 = local_c0 + 1;
              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);
              uVar2 = p->op;
              pEVar15 = p->pLimit;
              p->addrOpenEphm[1] = iVar22;
              p->pPrior = (Select *)0x0;
              p->pLimit = (Expr *)0x0;
              pcVar27 = "EXCEPT";
              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {
                pcVar27 = "UNION ALL";
                if (uVar2 != 0x85) {
                  pcVar27 = "UNION";
                }
              }
              local_38 = uVar13;
              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);
              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);
              local_c4 = (Vdbe *)p->pPrior;
              p->pPrior = pSVar37;
              if (pSVar37->nSelectRow < p->nSelectRow) {
                p->nSelectRow = pSVar37->nSelectRow;
              }
              if (p->pLimit != (Expr *)0x0) {
                sqlite3ExprDeleteNN(psVar3,p->pLimit);
              }
              p->pLimit = pEVar15;
              if (local_d0 == (Select *)0x0) {
                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);
                pSVar39 = (SortCtx *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar39;
                computeLimitRegisters(pParse,p,(int)pDVar31);
                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);
                if (pParse->nTempReg == '\0') {
                  pSVar38 = (SelectDest *)(pParse->nMem + 1);
                  pParse->nMem = (int)pSVar38;
                  pPVar41 = pParse;
                }
                else {
                  bVar8 = pParse->nTempReg - 1;
                  pParse->nTempReg = bVar8;
                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];
                  pPVar41 = extraout_ECX_00;
                }
                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);
                iVar12 = 0;
                pDest_00 = pSVar38;
                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);
                if (pSVar38 != (SelectDest *)0x0) {
                  pPVar41 = (Parse *)0x834aa;
                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);
                }
                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,
                                iVar12,(int)pPVar41);
                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);
                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);
                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);
                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);
                goto LAB_00083517;
              }
              goto LAB_00082ed0;
            }
          }
LAB_00082b00:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          goto LAB_00081db1;
        }
        pSVar35 = p->pSrc;
        local_c0 = p->pEList->nExpr;
        local_c4 = pParse->pVdbe;
        local_d0 = p->pPrior;
        if (p->pWin == (Window *)0x0) {
LAB_000827ee:
          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,
                                    (char *)in_stack_ffffff24);
          if (iVar22 == 0) {
            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);
            pParse->nLabel = (int)pDVar31;
            p->nSelectRow = 0x140;
            computeLimitRegisters(pParse,p,(int)pDVar31);
            pEVar15 = p->pLimit;
            iVar22 = pSVar35->nSrc;
            p->pLimit = (Expr *)0x0;
            iVar12 = p->iLimit;
            p->iLimit = 0;
            iVar14 = p->iOffset;
            p->iOffset = 0;
            pEVar16 = p->pOrderBy;
            if (iVar22 < 1) {
LAB_00082895:
              local_b4 = (ExprList *)0x0;
            }
            else {
              bVar8 = pSVar35->a[0].fg.field_0x1;
              iVar23 = 0;
              while ((bVar8 & 0x20) == 0) {
                if (iVar23 + 1 == iVar22) goto LAB_00082895;
                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);
                iVar23 = iVar23 + 1;
              }
              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;
            }
            uVar13 = pParse->nTab;
            local_bc = uVar13 + 1;
            pParse->nTab = local_bc;
            iVar22 = pParse->nMem + 1;
            local_38 = uVar13;
            if (p->op == 0x84) {
              if (pEVar16 != (ExprList *)0x0) {
                nLimit = CONCAT31(nLimit._1_3_,8);
                local_34 = 0;
                local_2c._4_4_ = (char *)0x0;
                local_30 = 0;
                pParse->nTab = uVar13 + 2;
                local_2c._0_4_ = 0;
                pParse->nMem = iVar22;
                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);
                iVar23 = extraout_ECX_01;
                goto LAB_00082930;
              }
              nLimit = CONCAT31(nLimit._1_3_,6);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              pParse->nTab = uVar13 + 2;
              local_2c._0_4_ = 0;
              pParse->nMem = iVar22;
              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);
              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);
LAB_00082986:
              if (local_bc != 0) {
                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);
                p->selFlags = p->selFlags | 0x20;
                p->addrOpenEphm[0] = iVar23;
              }
              p->pOrderBy = (ExprList *)0x0;
              local_d0->pNext = (Select *)0x0;
              sqlite3VdbeExplain(pParse,'\x01',"SETUP");
              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);
              local_d0->pNext = p;
              if (iVar23 == 0) {
                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);
                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);
                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;
                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);
LAB_00083747:
                local_ac = (SelectDest *)&nLimit;
                pSVar38 = (SelectDest *)0x0;
                iVar23 = iVar22;
                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);
                pSVar39 = (SortCtx *)(pParse->nLabel + -1);
                pParse->nLabel = (int)pSVar39;
                if (0 < iVar14) {
                  iVar23 = 0x83784;
                  codeOffset(local_c4,iVar14,(int)pSVar39);
                }
                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22
                                ,iVar23);
                if (iVar12 != 0) {
                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);
                }
                pVVar28 = local_c4;
                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);
                if ((p->selFlags & 8) == 0) {
                  p->pPrior = (Select *)0x0;
                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);
                  sqlite3Select(pParse,p,local_ac);
                  p->pPrior = local_d0;
                }
                else {
                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28
                                 );
                }
                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);
                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);
              }
            }
            else {
              if (pEVar16 != (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 = iVar22;
                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);
                local_bc = 0;
                iVar23 = extraout_ECX;
LAB_00082930:
                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);
                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);
                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);
                local_2c._8_4_ = pEVar16;
                goto LAB_00082986;
              }
              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 = iVar22;
              pPVar41 = pParse;
              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);
              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);
              p->pOrderBy = (ExprList *)0x0;
              local_d0->pNext = (Select *)0x0;
              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);
              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);
              local_d0->pNext = p;
              if (iVar23 == 0) {
                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);
                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);
LAB_00083923:
                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);
                goto LAB_00083747;
              }
            }
            if (p->pOrderBy != (ExprList *)0x0) {
              exprListDeleteNN(pParse->db,p->pOrderBy);
            }
            p->pOrderBy = pEVar16;
            p->pLimit = pEVar15;
          }
        }
        else {
LAB_00082701:
          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");
        }
        if (pParse->nErr == 0) {
          local_c4 = (Vdbe *)0x0;
          local_d0 = (Select *)0x0;
LAB_00082732:
          if ((p->selFlags & 0x20) != 0) {
            puVar4 = (undefined1 *)p->pEList->nExpr;
            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);
            if (pKVar26 == (KeyInfo *)0x0) {
              local_d0 = (Select *)0x7;
            }
            else {
              if (0 < (int)puVar4) {
                pSVar37 = (Select *)0x0;
                do {
                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);
                  pKVar26->aColl[(int)pSVar37] = pCVar17;
                  if (pCVar17 == (CollSeq *)0x0) {
                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;
                  }
                  pSVar37 = (Select *)&pSVar37->field_0x1;
                } while ((Select *)puVar4 != pSVar37);
              }
              do {
                iVar22 = 0;
                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {
                  pOVar25 = (Op *)&dummy_22674;
                  if (local_c8->db->mallocFailed == '\0') {
                    pOVar25 = local_c8->aOp + iVar12;
                  }
                  pOVar25->p2 = (int)puVar4;
                  pKVar26->nRef = pKVar26->nRef + 1;
                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);
                  p->addrOpenEphm[iVar22] = -1;
                  if (iVar22 == 1) break;
                  iVar22 = 1;
                }
                p = p->pPrior;
              } while (p != (Select *)0x0);
              uVar21 = pKVar26->nRef - 1;
              pKVar26->nRef = uVar21;
              if (uVar21 == 0) {
                sqlite3KeyInfoUnref(pKVar26);
              }
            }
          }
LAB_0008273c:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          if (local_c4 != (Vdbe *)0x0) {
            clearSelect(psVar3,(Select *)local_c4,1);
          }
          goto LAB_00081db1;
        }
      }
      else {
        pEVar15 = p->pLimit;
        if (p->pWin != (Window *)0x0) {
          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;
          goto LAB_00081e83;
        }
        pSVar34 = p->pPrior;
        pSVar36 = p;
        if (pSVar34 == (Select *)0x0) {
LAB_000830eb:
          local_d0 = (Select *)0x1;
          pcVar27 = "";
        }
        else {
          local_d0 = (Select *)0x1;
          pSVar6 = pSVar34;
          do {
            pSVar36 = pSVar6;
            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));
            if (pSVar36->pWin != (Window *)0x0) {
              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;
              pSVar35 = p->pSrc;
              local_c0 = p->pEList->nExpr;
              local_c4 = pParse->pVdbe;
              local_d0 = pSVar34;
              goto LAB_000827ee;
            }
            pSVar6 = pSVar36->pPrior;
          } while (pSVar36->pPrior != (Select *)0x0);
          pcVar27 = "S";
          if (local_d0 == (Select *)0x1) goto LAB_000830eb;
        }
        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);
        do {
          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,
                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);
          if (pEVar15 != (Expr *)0x0) break;
          pSVar36->nSelectRow = (LogEst)local_d0;
          pSVar36 = pSVar36->pNext;
        } while (pSVar36 != (Select *)0x0);
      }
      local_d0 = (Select *)0x0;
      pDest->iSdst = dest.iSdst;
      pDest->nSdst = dest.nSdst;
      goto LAB_00081db1;
    }
    uVar2 = p->op;
    if (uVar2 == 0x86) {
      pcVar27 = "EXCEPT";
    }
    else if (uVar2 == 0x87) {
      pcVar27 = "INTERSECT";
    }
    else {
      pcVar27 = "UNION";
      if (uVar2 == 0x85) {
        pcVar27 = "UNION ALL";
        pcVar11 = "LIMIT";
        goto LAB_00081d80;
      }
    }
    pcVar11 = "LIMIT";
  }
  else {
    uVar2 = p->op;
    if (uVar2 == 0x86) {
      pcVar27 = "EXCEPT";
    }
    else if (uVar2 == 0x87) {
      pcVar27 = "INTERSECT";
    }
    else {
      if (uVar2 != 0x85) {
        pcVar27 = "UNION";
        pcVar11 = "ORDER BY";
        goto LAB_00081d80;
      }
      pcVar27 = "UNION ALL";
    }
    pcVar11 = "ORDER BY";
  }
LAB_00081d80:
  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);
  pDest->iSdst = dest.iSdst;
  pDest->nSdst = dest.nSdst;
  local_d0 = (Select *)0x1;
LAB_00081db1:
  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_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)

{
  ushort *puVar1;
  uint *puVar2;
  char cVar3;
  byte *pbVar4;
  uint uVar5;
  byte *pbVar6;
  short sVar7;
  byte bVar8;
  undefined2 uVar9;
  short sVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  int iVar15;
  undefined4 uVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  undefined4 uVar21;
  uint uVar22;
  short sVar23;
  int *extraout_ECX;
  undefined4 extraout_ECX_00;
  char *pcVar24;
  int extraout_EDX;
  int *extraout_EDX_00;
  int unaff_EBP;
  uint uVar25;
  byte *pbVar26;
  int iVar27;
  int *piVar28;
  int in_GS_OFFSET;
  bool bVar29;
  undefined8 uVar30;
  undefined4 uVar31;
  byte *local_d0;
  int *local_c8;
  int local_c4;
  int local_c0;
  uint local_bc;
  int *local_b4;
  int local_b0;
  int local_ac;
  int *local_a4;
  int local_9c;
  int local_94;
  int local_90;
  undefined4 local_80;
  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 = 0x81ced;
  uVar30 = FUN_000a9503();
  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);
  piVar20 = (int *)uVar30;
  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {
    if (*(int *)(iVar18 + 0x3c) == 0) {
      local_c8 = (int *)piVar20[2];
      if (local_c8 == (int *)0x0) {
        local_c8 = (int *)FUN_000318c0();
      }
      if ((char)local_74 == '\f') {
        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);
        local_74 = CONCAT31(local_74._1_3_,0xe);
      }
      uVar12 = *(uint *)(param_2 + 4);
      if ((uVar12 & 0x400) == 0) {
        if ((uVar12 & 0x2000) == 0) {
LAB_00081e83:
          local_b4 = *(int **)(param_2 + 0x30);
          if (local_b4 != (int *)0x0) {
            iVar15 = *piVar20;
            piVar28 = (int *)piVar20[2];
            iVar18 = piVar20[0xe] + -1;
            iVar11 = piVar20[0xe] + -2;
            piVar20[0xe] = iVar11;
            iVar27 = *(int *)(param_2 + 0x34);
            uVar12 = (uint)*param_2;
            local_b0 = *local_b4;
            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&
               (0 < **(int **)(param_2 + 0x1c))) {
              uVar25 = 1;
              do {
                if (local_b0 < 1) {
                  if (local_b0 == 0) {
LAB_00081f4a:
                    local_3c = 0;
                    local_38 = 0;
                    iVar13 = FUN_0002ef20(0);
                    if (iVar13 == 0) {
                      local_d0 = (byte *)0x7;
                      goto LAB_00081db1;
                    }
                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;
                    *(uint *)(iVar13 + 8) = uVar25;
                    local_b4 = (int *)FUN_000449c0();
                    *(int **)(param_2 + 0x30) = local_b4;
                    if (local_b4 != (int *)0x0) {
                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;
                      local_b0 = local_b0 + 1;
                    }
                  }
                }
                else if (uVar25 != *(ushort *)(local_b4 + 4)) {
                  iVar13 = 0;
                  piVar14 = local_b4 + 1;
                  do {
                    iVar13 = iVar13 + 1;
                    if (iVar13 == local_b0) goto LAB_00081f4a;
                    puVar1 = (ushort *)(piVar14 + 7);
                    piVar14 = piVar14 + 4;
                  } while (*puVar1 != uVar25);
                }
                uVar25 = uVar25 + 1;
              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&
                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));
            }
            piVar14 = (int *)FUN_0002e2d0();
            if (piVar14 != (int *)0x0) {
              *piVar14 = local_b0;
              if (0 < local_b0) {
                iVar15 = 0;
                do {
                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;
                  iVar15 = iVar15 + 4;
                } while (local_b0 * 4 != iVar15);
              }
              FUN_0004c930();
            }
            *(int **)(param_2 + 0x30) = local_b4;
            uVar16 = FUN_00053100();
            *(undefined4 *)(iVar27 + 0x30) = uVar16;
            if (uVar12 == 0x85) {
              local_a4 = (int *)0x0;
              local_90 = 0;
            }
            else {
              iVar15 = **(int **)(param_2 + 0x1c);
              local_90 = piVar20[0xb] + 1;
              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];
              FUN_000315c0(local_90,0);
              local_a4 = (int *)FUN_00031ab0();
              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {
                iVar13 = 0;
                do {
                  iVar17 = FUN_0004c840(iVar13);
                  local_a4[iVar13 + 5] = iVar17;
                  *(undefined1 *)(local_a4[4] + iVar13) = 0;
                  iVar13 = iVar13 + 1;
                } while (iVar15 != iVar13);
              }
            }
            param_2[0x34] = 0;
            param_2[0x35] = 0;
            param_2[0x36] = 0;
            param_2[0x37] = 0;
            *(undefined4 *)(iVar27 + 0x38) = 0;
            FUN_00053b50(unaff_EBP + 0x289fb);
            if (*(int *)(iVar27 + 0x34) == 0) {
              FUN_00053b50(unaff_EBP + 0x289fb);
            }
            FUN_000781b0();
            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {
              local_9c = piVar20[0xb] + 1;
              local_94 = piVar20[0xb] + 2;
              piVar20[0xb] = local_94;
              FUN_000315c0(local_9c,0);
              FUN_000315c0(local_94,0);
            }
            else {
              local_94 = 0;
              local_9c = 0;
            }
            if (*(int *)(param_2 + 0x3c) != 0) {
              FUN_000432e0();
            }
            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;
            bVar8 = *param_2;
            iVar13 = unaff_EBP + 0x289ee;
            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {
              iVar13 = unaff_EBP + 0x289da;
              if (bVar8 != 0x85) {
                iVar13 = unaff_EBP + 0x289f5;
              }
            }
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);
            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);
            *(int *)(iVar27 + 8) = local_9c;
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);
            FUN_00070950();
            FUN_000315c0(0,0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            if (iVar17 < 0) {
              iVar17 = piVar28[0x1a] + -1;
            }
            iVar13 = unaff_EBP + 0x5d8e3;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar13 = piVar28[0x19] + iVar17 * 0x14;
            }
            *(int *)(iVar13 + 8) = piVar28[0x1a];
            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);
            uVar16 = *(undefined4 *)(param_2 + 8);
            uVar21 = *(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_94;
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);
            FUN_00070950();
            *(undefined4 *)(param_2 + 0xc) = uVar21;
            *(undefined4 *)(param_2 + 8) = uVar16;
            FUN_000315c0(0,0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);
            local_80 = 0;
            if (uVar12 - 0x84 < 2) {
              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,
                                      iVar18);
            }
            if ((local_a4 != (int *)0x0) &&
               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {
              FUN_0002a720();
            }
            iVar15 = iVar18;
            local_90 = iVar18;
            if (1 < uVar12 - 0x86) {
              iVar15 = FUN_000315c0(local_80,0);
              local_90 = FUN_000315c0(iVar18,0);
              FUN_000315c0(iVar15,0);
              uVar9 = FUN_00026b50();
              *(undefined2 *)(param_2 + 2) = uVar9;
            }
            if (uVar12 == 0x87) {
              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);
              }
              local_a4 = (int *)FUN_000315c0(uVar16,0);
              FUN_000315c0(iVar15,0);
              FUN_000315c0(iVar11,0);
              local_ac = iVar15;
            }
            else {
              local_ac = FUN_000315c0(uVar16,0);
              FUN_000315c0(iVar18,0);
              FUN_000315c0(local_ac,0);
              local_a4 = (int *)FUN_000315c0(uVar16,0);
              FUN_000315c0(iVar15,0);
              FUN_000315c0(iVar11,0);
              if (uVar12 != 0x85) {
                local_a4 = (int *)FUN_000315c0(iVar15,0);
                FUN_000315c0(iVar11,0);
              }
            }
            iVar18 = piVar28[0x1a];
            if (uVar12 - 0x84 < 2) {
              FUN_000315c0(local_80,0);
            }
            FUN_000315c0(local_ac,0);
            FUN_000315c0(iVar11,0);
            iVar15 = piVar28[0x1a] + -1;
            if (-1 < iVar17) {
              iVar15 = iVar17;
            }
            iVar11 = unaff_EBP + 0x5d8e3;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar11 = piVar28[0x19] + iVar15 * 0x14;
            }
            *(int *)(iVar11 + 8) = piVar28[0x1a];
            FUN_000315c0(local_90,0);
            FUN_000315c0(local_ac,0);
            FUN_00031430();
            FUN_000315c0(0,0);
            FUN_00032090(0xfffffff1);
            FUN_000315c0(local_30,local_b0);
            FUN_00032090(0xfffffff7);
            if (0 < piVar28[0x1a]) {
              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;
            }
            FUN_000315c0(local_a4,iVar18);
            FUN_00031430();
            if (*(int *)(param_2 + 0x34) != 0) {
              FUN_00043210();
            }
            *(int *)(param_2 + 0x34) = iVar27;
            *(byte **)(iVar27 + 0x38) = param_2;
            iVar18 = piVar20[0x36];
            if (iVar18 != 0) {
              piVar28 = (int *)piVar20[2];
              if (iVar18 < 0) {
                iVar18 = piVar28[0x1a] + -1;
              }
              iVar15 = unaff_EBP + 0x5d8e3;
              if (*(char *)(*piVar28 + 0x4d) == '\0') {
                iVar15 = piVar28[0x19] + iVar18 * 0x14;
              }
              iVar18 = *(int *)(iVar15 + 8);
            }
            piVar20[0x36] = iVar18;
            local_d0 = (byte *)(uint)(piVar20[9] != 0);
            goto LAB_00081db1;
          }
          if (*(int *)(iVar18 + 0x34) == 0) {
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);
          }
          bVar8 = *param_2;
          if (bVar8 == 0x85) {
            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);
            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);
            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);
            local_d0 = (byte *)FUN_00070950();
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            if (local_d0 == (byte *)0x0) {
              local_c0 = *(int *)(iVar18 + 8);
              uVar16 = *(undefined4 *)(iVar18 + 0xc);
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              *(int *)(param_2 + 8) = local_c0;
              *(undefined4 *)(param_2 + 0xc) = uVar16;
              if (local_c0 != 0) {
                uVar30 = FUN_000315c0(0,0);
                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);
                local_c0 = (int)uVar30;
                iVar27 = *(int *)(param_2 + 0xc);
                if (iVar27 != 0) {
                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);
                }
              }
              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);
              local_d0 = (byte *)FUN_00070950();
              local_c4 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar18;
              uVar9 = FUN_00026b50();
              *(undefined2 *)(param_2 + 2) = uVar9;
              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&
                 (0 < (int)local_3c)) {
                sVar10 = *(short *)(param_2 + 2);
                uVar12 = (int)local_3c >> 0x1f;
                if ((int)local_3c < 8) {
                  if (local_3c == 1) {
                    if (0 < sVar10) {
                      sVar10 = 0;
                      goto LAB_00083ad6;
                    }
                  }
                  else {
                    uVar22 = local_3c;
                    uVar25 = uVar12;
                    sVar7 = 0x28;
                    do {
                      sVar23 = sVar7;
                      uVar5 = uVar22 * 2;
                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;
                      uVar25 = 0;
                      uVar22 = uVar5;
                      sVar7 = sVar23 + -10;
                    } while (uVar5 < 8);
                    if ((short)(sVar23 + -0x14 +
                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {
                      sVar10 = 0x28;
                      local_bc = local_3c;
                      do {
                        sVar10 = sVar10 + -10;
                        bVar29 = CARRY4(local_bc,local_bc);
                        local_bc = local_bc * 2;
                        if (uVar12 * 2 + (uint)bVar29 != 0) break;
                        uVar12 = 0;
                      } while (local_bc < 8);
                      goto LAB_00083ac3;
                    }
                  }
                }
                else {
                  if ((int)local_3c < 0) {
                    uVar25 = 0x1f;
                    if ((int)local_3c < 0) {
                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {
                      }
                    }
                    uVar25 = uVar25 ^ 0x1f;
                  }
                  else {
                    uVar25 = 0x1f;
                    if (local_3c != 0) {
                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {
                      }
                    }
                    uVar25 = (uVar25 ^ 0x1f) + 0x20;
                  }
                  uVar25 = 0x3c - uVar25;
                  bVar8 = (byte)uVar25 & 0x1f;
                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;
                  if ((uVar25 & 0x20) != 0) {
                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);
                  }
                  if ((short)((short)uVar25 * 10 + 0x1e +
                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {
                    if ((int)local_3c < 0) {
                      uVar25 = 0x1f;
                      if ((int)local_3c < 0) {
                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {
                        }
                      }
                      uVar25 = uVar25 ^ 0x1f;
                    }
                    else {
                      uVar25 = 0x1f;
                      if (local_3c != 0) {
                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {
                        }
                      }
                      uVar25 = (uVar25 ^ 0x1f) + 0x20;
                    }
                    uVar25 = 0x3c - uVar25;
                    sVar10 = (short)uVar25 * 10 + 0x28;
                    bVar8 = (byte)uVar25 & 0x1f;
                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;
                    if ((uVar25 & 0x20) != 0) {
                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);
                    }
LAB_00083ac3:
                    sVar10 = sVar10 + -10 +
                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);
LAB_00083ad6:
                    *(short *)(param_2 + 2) = sVar10;
                  }
                }
              }
              if (local_c0 != 0) {
                iVar18 = local_c8[0x1a] + -1;
                if (-1 < local_c0) {
                  iVar18 = local_c0;
                }
                iVar27 = unaff_EBP + 0x5d8e3;
                if (*(char *)(*local_c8 + 0x4d) == '\0') {
                  iVar27 = iVar18 * 0x14 + local_c8[0x19];
                }
                *(int *)(iVar27 + 8) = local_c8[0x1a];
              }
              goto LAB_00082ed0;
            }
          }
          else {
            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {
              if ((char)local_74 == '\x01') {
                local_c0 = local_70;
              }
              else {
                local_c0 = piVar20[10];
                piVar20[10] = local_c0 + 1;
                uVar16 = FUN_000315c0(0,0);
                *(undefined4 *)(param_2 + 0x14) = uVar16;
                pbVar4 = param_2;
                do {
                  pbVar26 = pbVar4;
                  pbVar4 = *(byte **)(pbVar26 + 0x38);
                } while (pbVar4 != (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 = local_c0;
              local_d0 = (byte *)FUN_00070950();
              if (local_d0 != (byte *)0x0) goto LAB_00082b00;
              bVar8 = *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 (bVar8 == 0x86) {
                local_3c = CONCAT31(local_3c._1_3_,2);
                iVar27 = unaff_EBP + 0x289ee;
              }
              else {
                local_3c = CONCAT31(local_3c._1_3_,1);
                iVar27 = unaff_EBP + 0x289da;
                if (bVar8 != 0x85) {
                  iVar27 = unaff_EBP + 0x289e4;
                  if (bVar8 != 0x87) {
                    iVar27 = unaff_EBP + 0x289f5;
                  }
                }
              }
              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);
              local_d0 = (byte *)FUN_00070950();
              local_c4 = *(int *)(param_2 + 0x34);
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              *(int *)(param_2 + 0x34) = iVar18;
              if (*param_2 == 0x84) {
                uVar9 = FUN_00026b50();
                *(undefined2 *)(param_2 + 2) = uVar9;
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_000432e0();
              }
              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')) {
                iVar18 = piVar20[0xe] + -1;
                iVar11 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar11;
                uVar16 = FUN_000781b0();
                FUN_000315c0(iVar18,0,uVar16,uVar16);
                iVar27 = local_c8[0x1a];
                FUN_00079470(0,0,&local_74,iVar11,iVar18);
                uVar21 = FUN_00031430();
                uVar31 = uVar21;
                FUN_000315c0(iVar27,0,uVar21,uVar21);
                FUN_00031430();
LAB_00083517:
                FUN_000315c0(0,0,uVar21,uVar31);
              }
LAB_00082ed0:
              if (*(int *)(param_2 + 0x38) == 0) {
                iVar18 = piVar20[0x36];
                if (iVar18 != 0) {
                  piVar28 = (int *)piVar20[2];
                  if (iVar18 < 0) {
                    iVar18 = piVar28[0x1a] + -1;
                  }
                  iVar27 = unaff_EBP + 0x5d8e3;
                  if (*(char *)(*piVar28 + 0x4d) == '\0') {
                    iVar27 = iVar18 * 0x14 + piVar28[0x19];
                  }
                  iVar18 = *(int *)(iVar27 + 8);
                }
                piVar20[0x36] = iVar18;
              }
              if (piVar20[9] == 0) goto LAB_00082732;
              goto LAB_0008273c;
            }
            iVar27 = piVar20[10];
            piVar20[10] = iVar27 + 2;
            uVar16 = FUN_000315c0(0,0);
            *(undefined4 *)(param_2 + 0x14) = uVar16;
            pbVar4 = param_2;
            do {
              pbVar26 = pbVar4;
              pbVar4 = *(byte **)(pbVar26 + 0x38);
            } while (pbVar4 != (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 = iVar27;
            local_d0 = (byte *)FUN_00070950();
            if (local_d0 == (byte *)0x0) {
              uVar21 = FUN_000315c0(0,0);
              bVar8 = *param_2;
              uVar16 = *(undefined4 *)(param_2 + 0x3c);
              *(undefined4 *)(param_2 + 0x18) = uVar21;
              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;
              iVar11 = unaff_EBP + 0x289ee;
              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {
                iVar11 = unaff_EBP + 0x289da;
                if (bVar8 != 0x85) {
                  iVar11 = unaff_EBP + 0x289f5;
                }
              }
              local_38 = iVar27 + 1;
              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);
              local_d0 = (byte *)FUN_00070950();
              local_c4 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar18;
              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_000432e0();
              }
              *(undefined4 *)(param_2 + 0x3c) = uVar16;
              if (local_d0 == (byte *)0x0) {
                iVar18 = piVar20[0xe] + -1;
                iVar27 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar27;
                uVar16 = FUN_000781b0();
                FUN_000315c0(iVar18,0,uVar16,uVar16);
                if (*(char *)((int)piVar20 + 0x13) == '\0') {
                  iVar11 = piVar20[0xb] + 1;
                  piVar20[0xb] = iVar11;
                  piVar28 = piVar20;
                }
                else {
                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;
                  *(byte *)((int)piVar20 + 0x13) = bVar8;
                  iVar11 = piVar20[bVar8 + 0x26];
                  piVar28 = extraout_ECX;
                }
                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);
                FUN_000316b0(iVar27,iVar11,0);
                if (iVar11 != 0) {
                  FUN_00029c40();
                }
                FUN_00079470(0,0,&local_74,iVar27,iVar18);
                FUN_00031430();
                uVar21 = extraout_ECX_00;
                uVar31 = extraout_ECX_00;
                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);
                FUN_00031430();
                FUN_000315c0(0,0);
                goto LAB_00083517;
              }
              goto LAB_00082ed0;
            }
          }
LAB_00082b00:
          param_3[3] = local_68;
          param_3[4] = local_64;
          goto LAB_00081db1;
        }
        piVar28 = *(int **)(param_2 + 0x20);
        local_c0 = **(undefined4 **)(param_2 + 0x1c);
        local_d0 = *(byte **)(param_2 + 0x34);
        if (*(int *)(param_2 + 0x44) == 0) {
LAB_000827ee:
          iVar18 = FUN_0003c520(0,0);
          if (iVar18 == 0) {
            iVar17 = piVar20[0xe] + -1;
            piVar20[0xe] = iVar17;
            param_2[2] = 0x40;
            param_2[3] = 1;
            FUN_000781b0();
            uVar16 = *(undefined4 *)(param_2 + 0x3c);
            iVar18 = *piVar28;
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            iVar27 = *(int *)(param_2 + 8);
            param_2[8] = 0;
            param_2[9] = 0;
            param_2[10] = 0;
            param_2[0xb] = 0;
            iVar11 = *(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);
            iVar13 = extraout_EDX;
            if (0 < iVar18) {
              iVar19 = 0;
              bVar8 = *(byte *)((int)piVar28 + 0x2d);
              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {
                iVar13 = iVar19 * 0x44;
                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);
              }
            }
            local_38 = piVar20[10];
            local_bc = local_38 + 1;
            piVar20[10] = local_bc;
            iVar18 = 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] = iVar18;
                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);
                goto LAB_00082930;
              }
              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] = iVar18;
              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);
              FUN_000315c0(local_c0,0);
              piVar28 = extraout_EDX_00;
LAB_00082986:
              if (local_bc != 0) {
                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);
                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;
                *(undefined4 *)(param_2 + 0x14) = uVar21;
              }
              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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);
              uVar30 = FUN_00070950();
              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);
              *(byte **)(local_d0 + 0x38) = param_2;
              if ((int)uVar30 == 0) {
                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);
                uVar21 = FUN_000315c0(0,0);
                if (piVar14 == (int *)0x0) goto LAB_00083923;
                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);
LAB_00083747:
                FUN_000315c0(0,0,uVar21,uVar21);
                piVar28 = (int *)(piVar20[0xe] + -1);
                piVar20[0xe] = (int)piVar28;
                if (0 < iVar11) {
                  FUN_00031970();
                }
                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);
                if (iVar27 != 0) {
                  FUN_000315c0(iVar17,0,uVar21,uVar21);
                }
                uVar21 = FUN_00031430();
                if ((param_2[4] & 8) == 0) {
                  param_2[0x34] = 0;
                  param_2[0x35] = 0;
                  param_2[0x36] = 0;
                  param_2[0x37] = 0;
                  FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);
                  FUN_00070950();
                  *(byte **)(param_2 + 0x34) = local_d0;
                  piVar28 = piVar20;
                }
                else {
                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);
                }
                FUN_000315c0(local_c0,0,piVar28,piVar28);
                FUN_00031430();
              }
            }
            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] = iVar18;
                FUN_000315c0(iVar18,local_c0);
                local_bc = 0;
LAB_00082930:
                FUN_0004c930();
                FUN_000315c0(*piVar14 + 2,0);
                FUN_00032090(0xfffffff7);
                piVar28 = piVar14;
                local_24 = piVar14;
                goto LAB_00082986;
              }
              local_3c = CONCAT31(local_3c._1_3_,5);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              local_2c = 0;
              piVar20[0xb] = iVar18;
              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);
              FUN_000315c0(local_c0,0);
              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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);
              iVar13 = FUN_00070950();
              *(byte **)(local_d0 + 0x38) = param_2;
              if (iVar13 == 0) {
                local_c0 = FUN_000315c0(iVar17,0,0,0);
                uVar21 = FUN_000315c0(0,0);
LAB_00083923:
                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);
                goto LAB_00083747;
              }
            }
            if (*(int *)(param_2 + 0x30) != 0) {
              FUN_000433a0();
            }
            *(int **)(param_2 + 0x30) = piVar14;
            *(undefined4 *)(param_2 + 0x3c) = uVar16;
          }
        }
        else {
LAB_00082701:
          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);
        }
        if (piVar20[9] == 0) {
          local_c4 = 0;
          local_d0 = (byte *)0x0;
LAB_00082732:
          if ((param_2[4] & 0x20) != 0) {
            iVar18 = **(int **)(param_2 + 0x1c);
            piVar20 = (int *)FUN_00031ab0();
            if (piVar20 == (int *)0x0) {
              local_d0 = (byte *)0x7;
            }
            else {
              if (0 < iVar18) {
                iVar27 = 0;
                do {
                  iVar11 = FUN_0004c840(iVar27);
                  piVar20[iVar27 + 5] = iVar11;
                  if (iVar11 == 0) {
                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);
                  }
                  iVar27 = iVar27 + 1;
                } while (iVar18 != iVar27);
              }
              do {
                iVar15 = 0;
                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {
                  iVar27 = unaff_EBP + 0x5d8e3;
                  if (*(char *)(*local_c8 + 0x4d) == '\0') {
                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;
                  }
                  *(int *)(iVar27 + 8) = iVar18;
                  *piVar20 = *piVar20 + 1;
                  FUN_00032090(0xfffffff7);
                  pbVar4 = param_2 + iVar15 * 4 + 0x14;
                  pbVar4[0] = 0xff;
                  pbVar4[1] = 0xff;
                  pbVar4[2] = 0xff;
                  pbVar4[3] = 0xff;
                  if (iVar15 == 1) break;
                  iVar15 = 1;
                }
                param_2 = *(byte **)(param_2 + 0x34);
              } while (param_2 != (byte *)0x0);
              iVar18 = *piVar20;
              *piVar20 = iVar18 + -1;
              if (iVar18 + -1 == 0) {
                FUN_0002a720();
              }
            }
          }
LAB_0008273c:
          param_3[3] = local_68;
          param_3[4] = local_64;
          if (local_c4 != 0) {
            FUN_00043210();
          }
          goto LAB_00081db1;
        }
      }
      else {
        iVar27 = *(int *)(param_2 + 0x3c);
        if (*(int *)(param_2 + 0x44) != 0) {
          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;
          goto LAB_00081e83;
        }
        pbVar4 = *(byte **)(param_2 + 0x34);
        pbVar26 = param_2;
        if (pbVar4 == (byte *)0x0) {
LAB_000830eb:
          local_d0 = (byte *)0x1;
          iVar18 = unaff_EBP + 0x29350;
        }
        else {
          local_d0 = (byte *)0x1;
          pbVar6 = pbVar4;
          do {
            pbVar26 = pbVar6;
            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));
            if (*(int *)(pbVar26 + 0x44) != 0) {
              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;
              piVar28 = *(int **)(param_2 + 0x20);
              local_c0 = **(undefined4 **)(param_2 + 0x1c);
              local_d0 = pbVar4;
              goto LAB_000827ee;
            }
            pbVar6 = *(byte **)(pbVar26 + 0x34);
          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);
          iVar18 = unaff_EBP + 0x29531;
          if (local_d0 == (byte *)0x1) goto LAB_000830eb;
        }
        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);
        do {
          FUN_00079470(0,0,&local_74,1,1);
          if (iVar27 != 0) break;
          *(short *)(pbVar26 + 2) = (short)local_d0;
          pbVar26 = *(byte **)(pbVar26 + 0x38);
        } while (pbVar26 != (byte *)0x0);
      }
      local_d0 = (byte *)0x0;
      param_3[3] = local_68;
      param_3[4] = local_64;
      goto LAB_00081db1;
    }
    cVar3 = *pcVar24;
    if (cVar3 == -0x7a) {
      iVar18 = unaff_EBP + 0x289ee;
    }
    else if (cVar3 == -0x79) {
      iVar18 = unaff_EBP + 0x289e4;
    }
    else {
      iVar18 = unaff_EBP + 0x289f5;
      if (cVar3 == -0x7b) {
        iVar18 = unaff_EBP + 0x289da;
        iVar15 = unaff_EBP + 0x28f97;
        goto LAB_00081d80;
      }
    }
    iVar15 = unaff_EBP + 0x28f97;
  }
  else {
    cVar3 = *pcVar24;
    if (cVar3 == -0x7a) {
      iVar18 = unaff_EBP + 0x289ee;
    }
    else if (cVar3 == -0x79) {
      iVar18 = unaff_EBP + 0x289e4;
    }
    else {
      if (cVar3 != -0x7b) {
        iVar18 = unaff_EBP + 0x289f5;
        iVar15 = unaff_EBP + 0x28e22;
        goto LAB_00081d80;
      }
      iVar18 = unaff_EBP + 0x289da;
    }
    iVar15 = unaff_EBP + 0x28e22;
  }
LAB_00081d80:
  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);
  param_3[3] = local_68;
  param_3[4] = local_64;
  local_d0 = (byte *)0x1;
LAB_00081db1:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (uint)local_d0;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a9ea0();
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
MOV EBX,ECX
CALL 0x000a9503
ADD EBP,0x5c313
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 0x00081dd8
MOVZX EAX,byte ptr [EDX]
CMP AL,0x86
JZ 0x00081e30
CMP AL,0x87
JZ 0x00081e10
CMP AL,0x85
JZ 0x00081e40
LEA EDX,[EBP + 0xfffcc6e2]
LEA EAX,[EBP + 0xfffccb0f]
NOP
LEA ESI,[ESI]
PUSH EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcf5a8]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003c160
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 0x0008395c
ADD ESP,0xcc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x3c]
TEST EAX,EAX
JZ 0x00081e50
MOVZX EAX,byte ptr [EDX]
CMP AL,0x86
JZ 0x00081e28
CMP AL,0x87
JZ 0x000826c8
CMP AL,0x85
LEA EDX,[EBP + 0xfffcc6e2]
JZ 0x000826b0
LEA EAX,[EBP + 0xfffccc84]
JMP 0x00081d80
LEA EDX,[EBP + 0xfffcc6d1]
LEA EAX,[EBP + 0xfffccb0f]
JMP 0x00081d80
LEA EDX,[EBP + 0xfffcc6db]
JMP 0x00081dfc
LEA EDX,[EBP + 0xfffcc6db]
JMP 0x00081e16
LEA EDX,[EBP + 0xfffcc6c7]
JMP 0x00081e16
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
MOV dword ptr [ESP + 0x14],EAX
JZ 0x00082be0
CMP byte ptr [ESP + 0x68],0xc
JZ 0x00082bb0
MOV EDX,dword ptr [EDI + 0x4]
TEST DH,0x4
JNZ 0x00082770
AND DH,0x20
JNZ 0x000826d8
MOV ECX,dword ptr [EDI + 0x30]
TEST ECX,ECX
MOV dword ptr [ESP + 0x28],ECX
JZ 0x00082a30
MOV ESI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x10],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 ESI,dword ptr [EDI + 0x34]
MOV dword ptr [ESP + 0x34],EAX
MOVZX EAX,byte ptr [EDI]
MOV dword ptr [ESP + 0x20],EDX
MOV dword ptr [ESP + 0x18],ESI
MOV ESI,dword ptr [ECX]
CMP EAX,0x85
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x2c],ESI
JZ 0x00083052
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x00083052
MOV EAX,dword ptr [EDI + 0x1c]
MOV ECX,dword ptr [EAX]
TEST ECX,ECX
JLE 0x00083052
LEA EAX,[ESP + 0xa0]
MOV dword ptr [ESP + 0x14],EDI
MOV dword ptr [ESP + 0x38],EBX
MOV EDI,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x2c]
MOV ESI,0x1
MOV dword ptr [ESP + 0x30],EAX
LEA ESI,[ESI]
CMP EBX,0x0
LEA EDX,[EDI + 0x4]
JLE 0x00082bf8
MOVZX EAX,word ptr [EDI + 0x10]
CMP ESI,EAX
JZ 0x00081fb8
XOR EAX,EAX
JMP 0x00081f40
MOVZX ECX,word ptr [EDX + 0xc]
CMP ECX,ESI
JZ 0x00081fb8
ADD EAX,0x1
ADD EDX,0x10
CMP EAX,EBX
JNZ 0x00081f38
MOV dword ptr [ESP + 0xa0],0x0
MOV dword ptr [ESP + 0xa4],0x0
SUB ESP,0xc
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x40]
MOV EDX,0x98
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0002ef20
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00083550
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 0x000449c0
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x14]
TEST EDI,EDI
MOV dword ptr [EAX + 0x30],EDI
JZ 0x00081fb8
MOV EAX,EBX
ADD EBX,0x1
SHL EAX,0x4
MOV word ptr [EDI + EAX*0x1 + 0x10],SI
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x10]
ADD ESI,0x1
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x00081fd4
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x1c]
CMP ESI,dword ptr [EAX]
JLE 0x00081f18
MOV dword ptr [ESP + 0x28],EDI
MOV dword ptr [ESP + 0x2c],EBX
MOV EDI,dword ptr [ESP + 0x14]
MOV EBX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x2c]
XOR ECX,ECX
LEA ESI,[EAX*0x4 + 0x4]
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,ESI
CALL 0x0002e2d0
TEST EAX,EAX
MOV EDX,EAX
MOV dword ptr [ESP + 0x50],EAX
MOV dword ptr [ESP + 0x44],0x0
JZ 0x00082056
MOV EAX,dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x28]
ADD ECX,0x4
TEST EAX,EAX
MOV dword ptr [EDX],EAX
JLE 0x00082047
MOV dword ptr [ESP + 0x14],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 0x00082030
MOV EBX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
CALL 0x0004c930
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESP + 0x8]
XOR ECX,ECX
MOV dword ptr [EDI + 0x30],EAX
MOV EDX,EAX
MOV EAX,dword ptr [ESI]
CALL 0x00053100
MOV ECX,dword ptr [ESP + 0x18]
CMP dword ptr [ESP + 0x1c],0x85
MOV dword ptr [ECX + 0x30],EAX
LEA EAX,[EDI + 0x1c]
MOV dword ptr [ESP + 0x14],EAX
JZ 0x00082c08
MOV EAX,dword ptr [EDI + 0x1c]
SUB ESP,0x8
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 + 0x30],ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x54],EDX
MOV dword ptr [ESI + 0x2c],EAX
PUSH 0x0
PUSH EDX
MOV EDX,0x45
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000315c0
MOV ESI,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,0x1
MOV EDX,ESI
CALL 0x00031ab0
MOV dword ptr [ESP + 0x48],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00082117
TEST ESI,ESI
JLE 0x00082117
MOV dword ptr [ESP + 0x3c],EBX
XOR ESI,ESI
MOV EBX,EAX
NOP
LEA ESI,[ESI]
SUB ESP,0xc
MOV ECX,dword ptr [EDI + 0x34]
PUSH ESI
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0004c840
MOV dword ptr [EBX + ESI*0x4 + 0x14],EAX
MOV EAX,dword ptr [EBX + 0x10]
ADD ESP,0x10
MOV byte ptr [EAX + ESI*0x1],0x0
ADD ESI,0x1
CMP dword ptr [ESP + 0x28],ESI
JNZ 0x000820e8
MOV EBX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x18]
LEA ESI,[EBP + 0xfffcc6e8]
SUB ESP,0xc
MOV dword ptr [EDI + 0x34],0x0
MOV ECX,dword ptr [EDI + 0x30]
MOV dword ptr [EAX + 0x38],0x0
PUSH ESI
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x00053b50
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JZ 0x0008327a
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
CALL 0x000781b0
CMP dword ptr [ESP + 0x1c],0x85
MOV ECX,dword ptr [EDI + 0x8]
JNZ 0x00082179
TEST ECX,ECX
JNZ 0x00083295
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV EDX,dword ptr [EDI + 0x3c]
TEST EDX,EDX
JZ 0x00082199
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x000432e0
MOV ESI,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 [ESI + 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 ECX,[EAX + 0x1]
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ESP + 0x14],EDX
LEA EDX,[EAX + 0x3]
ADD EAX,0x4
MOV dword ptr [ESI + 0x2c],EAX
MOV dword ptr [ESP + 0x58],EAX
LEA EAX,[EBP + 0xfffcc6db]
MOV dword ptr [ESP + 0x3c],EDX
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x28],ECX
MOV dword ptr [ESP + 0x88],ECX
MOV dword ptr [ESP + 0xa4],EDX
MOVZX EDX,byte ptr [EDI]
CMP DL,0x86
JZ 0x0008226b
CMP DL,0x87
LEA EAX,[EBP + 0xfffcc6d1]
JZ 0x0008226b
CMP DL,0x85
LEA EAX,[EBP + 0xfffcc6c7]
LEA EDX,[EBP + 0xfffcc6e2]
CMOVNZ EAX,EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcccb6]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
POP ECX
POP ESI
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 0x000315c0
MOV EDX,dword ptr [ESP + 0x50]
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0xc
MOV dword ptr [EAX + 0x8],EDX
LEA EAX,[EBP + 0xfffcccc1]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x18]
LEA ECX,[ESP + 0x94]
CALL 0x00070950
POP EAX
POP EDX
PUSH 0x0
PUSH 0x0
MOV EDX,0x42
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000315c0
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 0x00082332
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 + 0x24]
MOV dword ptr [ESP + 0x1c],ESI
CALL 0x000315c0
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 + 0x58]
ADD ESP,0xc
MOV dword ptr [EDI + 0x8],EAX
LEA EAX,[EBP + 0xfffcccc6]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
MOV ECX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x00070950
MOV EDX,dword ptr [ESP + 0x64]
MOV dword ptr [EDI + 0xc],ESI
MOV dword ptr [EDI + 0x8],EDX
POP EAX
POP EDX
PUSH 0x0
PUSH 0x0
MOV EDX,0x42
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,ESI
CALL 0x000315c0
MOV EAX,dword ptr [ESI + 0xc]
LEA EDX,[EDI + 0x8]
LEA ESI,[EDI + 0xc]
MOV dword ptr [ESP + 0x40],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 + 0x40]
PUSH dword ptr [ESP + 0x58]
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 0x00032740
MOV dword ptr [ESP + 0x68],EAX
MOV EAX,dword ptr [ESP + 0x3c]
SUB EAX,0x84
MOV dword ptr [ESP + 0x74],EAX
ADD ESP,0x20
CMP EAX,0x1
MOV dword ptr [ESP + 0x5c],0x0
JBE 0x000830fe
MOV ESI,dword ptr [ESP + 0x38]
TEST ESI,ESI
JZ 0x00082448
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x30],EAX
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [ESI],EAX
JZ 0x000830df
MOV EAX,dword ptr [ESP + 0x1c]
SUB EAX,0x86
CMP EAX,0x1
JA 0x00082d18
MOV ESI,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x4c],ESI
CMP dword ptr [ESP + 0x1c],0x87
JNZ 0x00082c20
MOV EAX,dword ptr [ESP + 0x18]
MOVZX EAX,word ptr [EAX + 0x2]
CMP word ptr [EDI + 0x2],AX
JLE 0x00082482
MOV word ptr [EDI + 0x2],AX
SUB ESP,0x8
MOV EDX,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x4c]
MOV EAX,EBX
CALL 0x000315c0
MOV dword ptr [ESP + 0x48],EAX
MOV EDX,0xe
POP ECX
POP EAX
PUSH 0x0
PUSH ESI
MOV EAX,EBX
MOV ECX,dword ptr [ESP + 0x38]
CALL 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x40]
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBX
CALL 0x000315c0
MOV EAX,dword ptr [ESP + 0x48]
ADD EAX,0x1
MOV dword ptr [ESP + 0x4c],EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x30],ESI
CMP dword ptr [ESP + 0x54],0x1
MOV EAX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [EAX + 0x68]
JBE 0x0008313d
SUB ESP,0x8
MOV EDX,0xe
PUSH 0x0
PUSH dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,EBX
CALL 0x000315c0
POP ECX
POP EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x40]
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBX
CALL 0x000315c0
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 0x0008255c
MOV EDX,dword ptr [ESP + 0xc]
LEA ECX,[EBX + EBX*0x4]
MOV EDX,dword ptr [EDX + 0x64]
LEA EDX,[EDX + ECX*0x4]
SUB ESP,0x8
MOV dword ptr [EDX + 0x8],EAX
MOV EDX,0xe
PUSH 0x0
PUSH dword ptr [ESP + 0x58]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,EBX
CALL 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x3c]
MOV EDX,0xe
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,EBX
CALL 0x000315c0
MOV EDX,dword ptr [ESP + 0x44]
MOV EAX,EBX
CALL 0x00031430
POP ECX
POP EAX
PUSH 0x0
PUSH 0x0
XOR ECX,ECX
MOV EDX,0x55
MOV EAX,EBX
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x60]
MOV EDX,EAX
MOV EAX,EBX
MOV dword ptr [ESP],0xfffffff1
CALL 0x00032090
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0xb8]
MOV EDX,0x56
MOV ECX,dword ptr [ESP + 0xa0]
MOV EAX,EBX
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x54]
MOV EDX,EAX
MOV EAX,EBX
MOV dword ptr [ESP],0xfffffff7
CALL 0x00032090
MOV EAX,dword ptr [EBX + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x00082617
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 + 0x44]
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x4c]
MOV EAX,ESI
CALL 0x000315c0
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,ESI
CALL 0x00031430
MOV EDX,dword ptr [EDI + 0x34]
ADD ESP,0x10
TEST EDX,EDX
JZ 0x00082656
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,0x1
CALL 0x00043210
MOV EAX,dword ptr [ESP + 0x18]
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 0x00082693
MOV EDX,dword ptr [EDI + 0x8]
JNS 0x00082679
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 0x00082690
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 0x00081db1
LEA EDX,[EBP + 0xfffcc6c7]
LEA EAX,[EBP + 0xfffccc84]
JMP 0x00081d80
LEA EDX,[EBP + 0xfffcc6d1]
JMP 0x00081dfc
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 0x000827ee
LEA EAX,[EBP + 0xfffcf5d4]
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003c160
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 0x00082b92
MOV dword ptr [ESP + 0x18],0x0
TEST byte ptr [EDI + 0x4],0x20
JNZ 0x00083062
MOV EAX,dword ptr [ESP + 0x74]
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [EBX + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x78]
TEST EDX,EDX
MOV dword ptr [EBX + 0x10],EAX
JZ 0x00081db1
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,0x1
CALL 0x00043210
JMP 0x00081db1
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 0x00083535
MOV EAX,dword ptr [EDI + 0x34]
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JZ 0x000830eb
MOV dword ptr [ESP + 0x20],ESI
MOV dword ptr [ESP + 0x1c],EDX
MOV ESI,0x1
JMP 0x000827bd
MOV EDX,dword ptr [EAX + 0x34]
TEST EDX,EDX
JZ 0x00082b18
MOV EAX,EDX
MOV EDX,dword ptr [EAX + 0x44]
ADD ESI,ECX
TEST EDX,EDX
JZ 0x000827b0
MOV EDX,dword ptr [ESP + 0x1c]
MOV ESI,dword ptr [ESP + 0x20]
AND DH,0x20
JZ 0x00081e83
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 0x0003c520
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00082717
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 0x000781b0
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 0x00082895
XOR EAX,EAX
TEST byte ptr [ESI + 0x2d],0x20
JZ 0x0008288e
JMP 0x0008355d
IMUL EDX,EAX,0x44
TEST byte ptr [ESI + EDX*0x1 + 0x2d],0x20
JNZ 0x0008355d
ADD EAX,0x1
CMP EAX,ECX
JNZ 0x00082880
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 + 0x30],ECX
ADD EAX,0x1
CMP byte ptr [EDI],0x84
MOV dword ptr [ESP + 0x34],EAX
JZ 0x000835cb
MOV ECX,dword ptr [ESP + 0x2c]
TEST ECX,ECX
JZ 0x00083822
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x34]
SUB ESP,0x8
MOV byte ptr [ESP + 0xa8],0x7
MOV dword ptr [ESP + 0xac],ESI
MOV EDX,0x72
MOV dword ptr [ESP + 0xb0],0x0
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 0x000315c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,EDI
CALL 0x0004c930
SUB ESP,0x8
MOV dword ptr [ESP + 0x24],EAX
MOV ECX,ESI
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [EDX]
MOV EDX,0x64
MOV dword ptr [ESP + 0x3c],EAX
ADD EAX,0x2
PUSH EAX
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP],0xfffffff7
CALL 0x00032090
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 0x000829ae
MOV ECX,EAX
PUSH EDX
PUSH EDX
PUSH 0x0
PUSH 0x0
MOV EDX,0x64
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
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 + 0xfffccca1]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
LEA EDX,[ESP + 0xb0]
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x40],EDX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x00070950
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ECX + 0x38],EDI
JZ 0x000836e1
MOV EDX,dword ptr [EDI + 0x30]
TEST EDX,EDX
JZ 0x00082a13
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
CALL 0x000433a0
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 0x00082717
MOV ECX,dword ptr [ESI + 0x34]
TEST ECX,ECX
JZ 0x00083160
MOVZX EAX,byte ptr [EDI]
CMP AL,0x85
JZ 0x00082ef0
CMP AL,0x86
JZ 0x00082d83
CMP AL,0x84
JZ 0x00082d83
MOV EDX,dword ptr [ESP + 0x8]
SUB ESP,0x8
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
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [EDI + 0x14],EAX
MOV EDX,EDI
JMP 0x00082a92
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x38]
TEST EAX,EAX
JNZ 0x00082a90
MOV EAX,dword ptr [ESP + 0x1c]
OR dword ptr [EDX + 0x4],0x20
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
LEA EAX,[ESP + 0xa0]
MOV dword ptr [ESP + 0xb0],0x0
MOV dword ptr [ESP + 0x30],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x00070950
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JZ 0x0008332d
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 0x00081db1
CMP ESI,0x1
MOV EDI,EAX
MOV dword ptr [ESP + 0xc],ESI
LEA EAX,[EBP + 0xfffcd21e]
JZ 0x000830eb
SUB ESP,0xc
MOV ESI,EDI
PUSH EAX
LEA EAX,[EBP + 0xfffccc8a]
PUSH dword ptr [ESP + 0x1c]
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x24]
CALL 0x0003eec0
ADD ESP,0x20
MOV dword ptr [ESP + 0x10],EBX
MOV EDI,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ESP + 0xc]
LEA EBP,[ESP + 0x68]
LEA ESI,[ESI]
SUB ESP,0xc
MOV ECX,0xffffffff
MOV EDX,ESI
PUSH 0x1
PUSH 0x1
PUSH EBP
PUSH 0x0
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00079470
ADD ESP,0x20
TEST EDI,EDI
JNZ 0x00082b8e
MOV word ptr [ESI + 0x2],BX
MOV ESI,dword ptr [ESI + 0x38]
TEST ESI,ESI
JNZ 0x00082b60
MOV EBX,dword ptr [ESP + 0x10]
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 0x00081db1
MOV EAX,dword ptr [EDI + 0x1c]
SUB ESP,0x8
MOV EDX,0x64
PUSH 0x0
PUSH dword ptr [EAX]
MOV ECX,dword ptr [ESP + 0x7c]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
MOV byte ptr [ESP + 0x78],0xe
ADD ESP,0x10
JMP 0x00081e6e
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x000318c0
MOV dword ptr [ESP + 0x14],EAX
JMP 0x00081e63
JNZ 0x00081fb8
JMP 0x00081f4a
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x4c],0x0
JMP 0x00082117
SUB ESP,0x8
MOV EDX,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x54]
MOV EBX,dword ptr [ESP + 0x4c]
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,EBX
CALL 0x000315c0
MOV dword ptr [ESP + 0x40],EAX
MOV EDX,0xe
POP ECX
POP EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x3c]
XOR ECX,ECX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0xb
CALL 0x000315c0
POP ECX
POP EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x54]
MOV ECX,EBX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0xc
CALL 0x000315c0
MOV dword ptr [ESP + 0x4c],EAX
MOV EBX,EAX
POP EAX
POP EDX
PUSH 0x0
PUSH ESI
MOV EDX,0xe
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000315c0
POP ECX
POP EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x40]
XOR ECX,ECX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0xb
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [ESP + 0x38],EBX
CMP dword ptr [ESP + 0x1c],0x85
JZ 0x000824e0
SUB ESP,0x8
MOV EDX,0xe
PUSH 0x0
PUSH ESI
MOV ESI,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,ESI
CALL 0x000315c0
MOV dword ptr [ESP + 0x48],EAX
XOR ECX,ECX
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x40]
MOV EDX,0xb
MOV EAX,ESI
CALL 0x000315c0
ADD ESP,0x10
JMP 0x000824e0
SUB ESP,0x8
MOV EDX,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x68]
MOV EBX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x68]
MOV EAX,EBX
CALL 0x000315c0
MOV ESI,EAX
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV EDX,0xe
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,EBX
CALL 0x000315c0
MOV dword ptr [ESP + 0x5c],EAX
MOV EDX,0xb
POP ECX
POP EAX
PUSH 0x0
PUSH ESI
XOR ECX,ECX
MOV EAX,EBX
CALL 0x000315c0
MOV EAX,dword ptr [ESP + 0x28]
MOVSX EDX,word ptr [EAX + 0x2]
MOVSX EAX,word ptr [EDI + 0x2]
CALL 0x00026b50
ADD ESP,0x10
MOV word ptr [EDI + 0x2],AX
JMP 0x00082462
CMP byte ptr [ESP + 0x68],0x1
JNZ 0x00083192
MOV EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x1c]
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 + 0xa4],EAX
LEA EAX,[ESP + 0xa0]
MOV dword ptr [ESP + 0x30],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x00070950
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JNZ 0x00082b00
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 0x0008356d
CMP DL,0x85
MOV byte ptr [ESP + 0xa0],0x1
LEA EAX,[EBP + 0xfffcc6c7]
JZ 0x00082e3f
CMP DL,0x87
LEA EAX,[EBP + 0xfffcc6d1]
LEA EDX,[EBP + 0xfffcc6e2]
CMOVNZ EAX,EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcccee]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
MOV ECX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x00070950
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 + 0x28],EAX
ADD ESP,0x10
CMP byte ptr [EDI],0x84
JNZ 0x00082e8f
MOVSX EDX,word ptr [ESI + 0x2]
MOVSX EAX,word ptr [EDI + 0x2]
CALL 0x00026b50
MOV word ptr [EDI + 0x2],AX
MOV EDX,dword ptr [EDI + 0x3c]
TEST EDX,EDX
JZ 0x00082e9f
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x000432e0
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 0x00082ed0
MOV EAX,dword ptr [ESP + 0x10]
CMP byte ptr [EAX + 0x4d],0x0
JZ 0x0008364b
LEA ESI,[ESI]
MOV ESI,dword ptr [EDI + 0x38]
TEST ESI,ESI
JZ 0x000832ec
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [EAX + 0x24]
TEST ECX,ECX
JNZ 0x0008273c
JMP 0x00082732
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 + 0x18],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x00070950
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [EDI + 0x3c],0x0
JNZ 0x00082b00
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 + 0x1c],ECX
MOV dword ptr [EDI + 0x8],ECX
MOV dword ptr [EDI + 0xc],EAX
JNZ 0x00083580
LEA EAX,[EBP + 0xfffcc6c7]
SUB ESP,0x4
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x00070950
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 + 0x28],EAX
MOVSX EAX,word ptr [EDI + 0x2]
CALL 0x00026b50
MOV word ptr [EDI + 0x2],AX
MOV EAX,dword ptr [ESI + 0x3c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00083013
MOV EAX,dword ptr [EAX + 0xc]
LEA EDX,[ESP + 0xa0]
CALL 0x00029640
TEST EAX,EAX
JZ 0x00083013
MOV ESI,dword ptr [ESP + 0xa0]
TEST ESI,ESI
JLE 0x00083013
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 0x00083a30
SUB ESI,0x1
JZ 0x00083b28
MOV ECX,0x28
SHLD EDX,EAX,0x1
MOV ESI,ECX
ADD EAX,EAX
SUB ECX,0xa
CMP EDX,0x0
JBE 0x00083a22
LEA ECX,[EBP + 0xfffd314c]
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 0x00083af8
MOV ESI,dword ptr [ESP + 0x1c]
TEST ESI,ESI
JZ 0x00082ed0
MOV ECX,dword ptr [ESP + 0x14]
TEST ESI,ESI
MOV EDX,dword ptr [ECX + 0x68]
LEA EAX,[EDX + -0x1]
CMOVNS EAX,ESI
MOV ESI,ECX
MOV ECX,dword ptr [ECX]
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[EBP + 0x15d0]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x0008304a
IMUL EAX,dword ptr [ESP + 0x1c],0x14
ADD EAX,dword ptr [ESI + 0x64]
MOV dword ptr [EAX + 0x8],EDX
JMP 0x00082ed0
LEA EAX,[ESP + 0xa0]
MOV dword ptr [ESP + 0x30],EAX
JMP 0x00081fe4
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 + 0x1c],ESI
CALL 0x00031ab0
TEST EAX,EAX
MOV dword ptr [ESP + 0x28],EAX
JZ 0x00083543
ADD EAX,0x14
TEST ESI,ESI
JLE 0x000831de
LEA ESI,[EDI + 0x1c]
MOV dword ptr [ESP + 0x2c],EBX
MOV EBX,EAX
MOV dword ptr [ESP + 0x20],ESI
XOR ESI,ESI
JMP 0x000830b5
ADD ESI,0x1
CMP dword ptr [ESP + 0x1c],ESI
JZ 0x000831da
SUB ESP,0xc
MOV ECX,dword ptr [EDI + 0x34]
PUSH ESI
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0004c840
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [EBX + ESI*0x4],EAX
JNZ 0x000830a8
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [EBX + ESI*0x4],EAX
JMP 0x000830a8
MOV EAX,ESI
CALL 0x0002a720
JMP 0x00082448
MOV dword ptr [ESP + 0xc],0x1
LEA EAX,[EBP + 0xfffcd03d]
JMP 0x00082b2d
SUB ESP,0x4
MOV ECX,ESI
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x68]
PUSH EBX
LEA EAX,[ESP + 0xc8]
PUSH EAX
LEA EAX,[ESP + 0xc8]
PUSH EAX
MOV EDX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00032740
MOV dword ptr [ESP + 0x7c],EAX
ADD ESP,0x20
JMP 0x0008242d
SUB ESP,0x8
MOV EDX,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x68]
MOV ECX,dword ptr [ESP + 0x68]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x000824f2
LEA EAX,[EBP + 0xfffccccc]
SUB ESP,0x4
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
LEA EAX,[EBP + 0xfffcccdb]
ADD ESP,0xc
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
ADD ESP,0x10
JMP 0x00082a3b
MOV EDX,dword ptr [ESP + 0x8]
SUB ESP,0x8
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
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
ADD ESP,0x10
MOV dword ptr [EDI + 0x14],EAX
MOV EDX,EDI
JMP 0x000831ca
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x38]
TEST EAX,EAX
JNZ 0x000831c8
OR dword ptr [EDX + 0x4],0x20
JMP 0x00082d96
MOV EBX,dword ptr [ESP + 0x2c]
LEA EBP,[EBP + 0x15d0]
MOV ESI,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x20],EBX
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,dword ptr [ESP + 0x14]
LEA ESI,[ESI]
XOR EBX,EBX
MOV EDX,dword ptr [EDI + EBX*0x4 + 0x14]
TEST EDX,EDX
JS 0x00083240
MOV ECX,dword ptr [EBP]
MOV EAX,dword ptr [ESP + 0x8]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x00083218
MOV ECX,dword ptr [EBP + 0x64]
LEA EAX,[EDX + EDX*0x4]
LEA EAX,[ECX + EAX*0x4]
MOV ECX,dword ptr [ESP + 0x1c]
SUB ESP,0xc
MOV dword ptr [EAX + 0x8],ECX
ADD dword ptr [ESI],0x1
MOV ECX,ESI
PUSH -0x9
MOV EAX,EBP
CALL 0x00032090
ADD ESP,0x10
CMP EBX,0x1
MOV dword ptr [EDI + EBX*0x4 + 0x14],0xffffffff
JNZ 0x00083270
MOV EDI,dword ptr [EDI + 0x34]
TEST EDI,EDI
JNZ 0x000831f8
MOV EDI,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x8],EAX
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [EDI],EAX
JNZ 0x0008273c
MOV EAX,EDI
CALL 0x0002a720
JMP 0x0008273c
MOV EBX,0x1
JMP 0x000831fa
SUB ESP,0xc
MOV ECX,dword ptr [EAX + 0x30]
LEA EDX,[EAX + 0x1c]
PUSH ESI
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x00053b50
ADD ESP,0x10
JMP 0x00082155
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDX + 0x2c]
LEA ESI,[EAX + 0x1]
ADD EAX,0x2
MOV dword ptr [ESP + 0x48],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,0x8
MOV EDX,0x4d
PUSH 0x0
PUSH ESI
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000315c0
POP ECX
POP EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x54]
MOV ECX,ESI
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,0x4d
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00082189
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ECX + 0xd8]
TEST EAX,EAX
JZ 0x0008331e
MOV ESI,dword ptr [ECX + 0x8]
JNS 0x00083305
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 0x0008331b
IMUL EAX,EAX,0x14
ADD EAX,dword ptr [ESI + 0x64]
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x8]
MOV ESI,dword ptr [ESP + 0x8]
MOV dword ptr [ESI + 0xd8],EAX
JMP 0x00082edb
MOV EAX,dword ptr [ESP + 0x1c]
SUB ESP,0x8
MOV EDX,0x64
PUSH 0x0
PUSH 0x0
ADD EAX,0x1
MOV dword ptr [ESP + 0x30],EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
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 + 0xfffcc6db]
JZ 0x000833a0
CMP DL,0x87
LEA EAX,[EBP + 0xfffcc6d1]
JZ 0x000833a0
CMP DL,0x85
LEA EAX,[EBP + 0xfffcc6c7]
LEA EDX,[EBP + 0xfffcc6e2]
CMOVNZ EAX,EDX
PUSH EAX
LEA EAX,[EBP + 0xfffcccee]
PUSH EAX
PUSH 0x1
PUSH dword ptr [ESP + 0x14]
CALL 0x0003eec0
MOV ECX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EDI
CALL 0x00070950
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDI + 0x34]
MOV dword ptr [EDI + 0x34],ESI
MOV dword ptr [ESP + 0x28],EAX
MOVZX EAX,word ptr [ESI + 0x2]
ADD ESP,0x10
CMP word ptr [EDI + 0x2],AX
JLE 0x000833e1
MOV word ptr [EDI + 0x2],AX
MOV EDX,dword ptr [EDI + 0x3c]
TEST EDX,EDX
JZ 0x000833f1
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x000432e0
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EDI + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JNZ 0x00082ed0
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 0x000781b0
PUSH EAX
PUSH EAX
MOV EDX,0x25
PUSH 0x0
PUSH dword ptr [ESP + 0x34]
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
MOVZX EAX,byte ptr [ESI + 0x13]
ADD ESP,0x10
TEST AL,AL
JNZ 0x00083943
MOV ECX,ESI
MOV ESI,dword ptr [ESI + 0x2c]
MOV dword ptr [ESP + 0x30],ESI
ADD ESI,0x1
MOV dword ptr [ECX + 0x2c],ESI
PUSH ECX
PUSH ECX
MOV EDX,0x7e
PUSH 0x0
PUSH ESI
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
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 0x000316b0
ADD ESP,0x10
TEST ESI,ESI
JZ 0x000834aa
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,ESI
CALL 0x00029c40
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 + 0x3c]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00079470
ADD ESP,0x20
MOV EDX,ESI
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,ESI
CALL 0x00031430
PUSH ECX
PUSH ECX
MOV EDX,0x5
PUSH 0x0
PUSH dword ptr [ESP + 0x3c]
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x2c]
CALL 0x000315c0
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,ESI
CALL 0x00031430
POP EAX
POP EDX
PUSH 0x0
PUSH 0x0
MOV EDX,0x74
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,ESI
CALL 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH 0x0
MOV EDX,0x74
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,ESI
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00082ed0
AND DH,0x20
JZ 0x00081e83
JMP 0x00082701
MOV dword ptr [ESP + 0xc],0x7
JMP 0x0008273c
MOV dword ptr [ESP + 0xc],0x7
JMP 0x00081db1
IMUL EAX,EAX,0x44
MOV EAX,dword ptr [ESI + EAX*0x1 + 0x30]
MOV dword ptr [ESP + 0x28],EAX
JMP 0x0008289d
MOV byte ptr [ESP + 0xa0],0x2
LEA EAX,[EBP + 0xfffcc6db]
JMP 0x00082e3f
SUB ESP,0x8
MOV EDX,0x14
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [EDI + 0xc]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00082f49
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 0x000315c0
ADD ESP,0x10
JMP 0x00082f49
CMP dword ptr [ESP + 0x2c],0x0
LEA EAX,[ESI + 0x2]
JZ 0x00083998
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 + 0x34]
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 0x000315c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x20],EAX
JMP 0x00082930
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 0x000781b0
PUSH EAX
PUSH EAX
MOV EDX,0x25
PUSH 0x0
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x000315c0
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 + 0x3c]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x00079470
ADD ESP,0x20
MOV EDX,ESI
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,ESI
CALL 0x00031430
PUSH EAX
PUSH EAX
MOV EDX,0x5
PUSH 0x0
PUSH dword ptr [ESP + 0x34]
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x2c]
CALL 0x000315c0
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,ESI
CALL 0x00031430
JMP 0x00083517
PUSH EDX
PUSH EDX
MOV ECX,ESI
PUSH 0x0
PUSH dword ptr [ESP + 0x44]
MOV EDX,0x25
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
MOV dword ptr [ESP + 0x2c],EAX
MOV EDX,0x80
POP ECX
POP EAX
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x2c]
TEST ECX,ECX
JZ 0x00083923
PUSH EAX
PUSH EAX
MOV EDX,0x59
PUSH dword ptr [ESP + 0x3c]
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 0x000315c0
ADD ESP,0x10
PUSH EAX
PUSH EAX
MOV ECX,ESI
PUSH 0x0
PUSH 0x0
MOV EDX,0x7a
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [ECX + 0x38]
MOV dword ptr [ESP + 0x30],ESI
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x44]
SUB ESI,0x1
MOV dword ptr [ECX + 0x38],ESI
TEST EDX,EDX
JLE 0x00083784
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,ESI
CALL 0x00031970
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 0x00079470
ADD ESP,0x20
CMP dword ptr [ESP + 0x40],0x0
JZ 0x000837cb
PUSH EAX
PUSH EAX
MOV EDX,0x3b
PUSH 0x0
PUSH dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,ESI
CALL 0x00031430
TEST byte ptr [EDI + 0x4],0x8
JZ 0x00083961
PUSH EAX
PUSH EAX
LEA EAX,[EBP + 0xfffcf608]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x0003c160
ADD ESP,0x10
PUSH ESI
PUSH ESI
XOR ECX,ECX
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
MOV EDX,0xb
MOV ESI,dword ptr [ESP + 0x28]
MOV EAX,ESI
CALL 0x000315c0
MOV EDX,dword ptr [ESP + 0x48]
MOV EAX,ESI
CALL 0x00031430
ADD ESP,0x10
JMP 0x00082a01
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0x34]
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 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
MOV EDX,0x64
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,ESI
CALL 0x000315c0
MOV ECX,dword ptr [ESP + 0x1c]
LEA EAX,[EBP + 0xfffccca1]
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 0x0003eec0
LEA EDX,[ESP + 0xb0]
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x40],EDX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x00070950
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ECX + 0x38],EDI
JNZ 0x00082a01
PUSH EAX
PUSH EAX
MOV ECX,ESI
PUSH 0x0
PUSH dword ptr [ESP + 0x44]
MOV EDX,0x25
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
MOV dword ptr [ESP + 0x2c],EAX
POP EDX
POP ECX
PUSH 0x0
PUSH 0x0
MOV EDX,0x80
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
ADD ESP,0x10
PUSH EAX
PUSH EAX
MOV ECX,ESI
PUSH 0x0
PUSH dword ptr [ESP + 0x40]
MOV EDX,0x7e
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x000315c0
ADD ESP,0x10
JMP 0x00083747
MOV ESI,dword ptr [ESP + 0x8]
SUB EAX,0x1
MOV byte ptr [ESI + 0x13],AL
MOVZX EAX,AL
MOV ESI,dword ptr [ESI + EAX*0x4 + 0x98]
JMP 0x00083461
CALL 0x000a9ea0
MOV dword ptr [EDI + 0x34],0x0
PUSH EAX
LEA EAX,[EBP + 0xfffccca7]
PUSH EAX
PUSH 0x1
MOV ESI,dword ptr [ESP + 0x14]
PUSH ESI
CALL 0x0003eec0
MOV ECX,dword ptr [ESP + 0x40]
MOV EDX,EDI
MOV EAX,ESI
CALL 0x00070950
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EDI + 0x34],EAX
JMP 0x000837f5
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 + 0x34]
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 0x000315c0
POP EAX
POP EDX
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
MOV ECX,ESI
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,0x64
CALL 0x000315c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x20],EAX
JMP 0x00082986
CMP EAX,0x7
JBE 0x00082fdf
JMP 0x00082ff3
MOV EDX,dword ptr [ESP + 0x24]
TEST EDX,EDX
JZ 0x00083adf
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 0x00083a5f
MOV EAX,EDX
MOV EDX,EAX
LEA EAX,[EBP + 0xfffd314c]
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 0x00083013
MOV EDX,dword ptr [ESP + 0x24]
TEST EDX,EDX
JZ 0x00083aed
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 0x00083abb
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 0x00083013
BSR EAX,ESI
XOR EAX,0x1f
ADD EAX,0x20
JMP 0x00083a42
BSR EAX,ESI
XOR EAX,0x1f
ADD EAX,0x20
JMP 0x00083a96
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 0x00083b1a
CMP ECX,0x7
JBE 0x00083b09
MOV dword ptr [ESP + 0x24],EBX
MOV ESI,EAX
MOV dword ptr [ESP + 0x20],ECX
MOV EBX,EDX
JMP 0x00083ac3
CMP word ptr [ESP + 0x28],0x0
JLE 0x00083013
XOR EAX,EAX
JMP 0x00083ad6
(translation_unit "uint __regparm3 FUN_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\n}\n\n" (function_definition "uint __regparm3 FUN_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00081ce0(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  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a9ea0();\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined2 uVar9;" type_identifier identifier ;) (declaration "short sVar10;" (sized_type_specifier "short" short) 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 "undefined4 uVar21;" type_identifier identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "short sVar23;" (sized_type_specifier "short" short) identifier ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "undefined4 extraout_ECX_00;" type_identifier identifier ;) (declaration "char *pcVar24;" primitive_type (pointer_declarator "*pcVar24" * identifier) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "int *extraout_EDX_00;" primitive_type (pointer_declarator "*extraout_EDX_00" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "undefined8 uVar30;" type_identifier identifier ;) (declaration "undefined4 uVar31;" type_identifier identifier ;) (declaration "byte *local_d0;" type_identifier (pointer_declarator "*local_d0" * 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_b4;" primitive_type (pointer_declarator "*local_b4" * identifier) ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int *local_a4;" primitive_type (pointer_declarator "*local_a4" * 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_80;" 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 = 0x81ced;" (assignment_expression "uStack_14 = 0x81ced" identifier = number_literal) ;) (expression_statement "uVar30 = FUN_000a9503();" (assignment_expression "uVar30 = FUN_000a9503()" identifier = (call_expression "FUN_000a9503()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);" (assignment_expression "pcVar24 = (char *)((ulonglong)uVar30 >> 0x20)" identifier = (cast_expression "(char *)((ulonglong)uVar30 >> 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar30 >> 0x20)" ( (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar20 = (int *)uVar30;" (assignment_expression "piVar20 = (int *)uVar30" identifier = (cast_expression "(int *)uVar30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar18 = *(int *)(pcVar24 + 0x34);" (assignment_expression "iVar18 = *(int *)(pcVar24 + 0x34)" identifier = (pointer_expression "*(int *)(pcVar24 + 0x34)" * (cast_expression "(int *)(pcVar24 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar24 + 0x34)" ( (binary_expression "pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" if (parenthesized_expression "(*(int *)(iVar18 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar18 + 0x30) == 0" (pointer_expression "*(int *)(iVar18 + 0x30)" * (cast_expression "(int *)(iVar18 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }" { (if_statement "if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }" if (parenthesized_expression "(*(int *)(iVar18 + 0x3c) == 0)" ( (binary_expression "*(int *)(iVar18 + 0x3c) == 0" (pointer_expression "*(int *)(iVar18 + 0x3c)" * (cast_expression "(int *)(iVar18 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 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_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\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_000318c0();\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_000318c0();\n      }" { (expression_statement "local_c8 = (int *)FUN_000318c0();" (assignment_expression "local_c8 = (int *)FUN_000318c0()" identifier = (cast_expression "(int *)FUN_000318c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000318c0()" identifier (argument_list "()" ( ))))) ;) })) (if_statement "if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" { (expression_statement "FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);" (call_expression "FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0)" identifier (argument_list "(**(undefined4 **)(param_2 + 0x1c),0)" ( (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) ))))) , 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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }" { (if_statement "if ((uVar12 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\n        }" { (labeled_statement "LAB_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);" statement_identifier : (expression_statement "local_b4 = *(int **)(param_2 + 0x30);" (assignment_expression "local_b4 = *(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_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }" if (parenthesized_expression "(local_b4 != (int *)0x0)" ( (binary_expression "local_b4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\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 "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = 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 "iVar27 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar27 = *(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 "uVar12 = (uint)*param_2;" (assignment_expression "uVar12 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "local_b0 = *local_b4;" (assignment_expression "local_b0 = *local_b4" identifier = (pointer_expression "*local_b4" * identifier)) ;) (if_statement "if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }" if (parenthesized_expression "(((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c)))" ( (binary_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))" (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 "(0 < **(int **)(param_2 + 0x1c))" ( (binary_expression "0 < **(int **)(param_2 + 0x1c)" number_literal < (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              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }" { (expression_statement "uVar25 = 1;" (assignment_expression "uVar25 = 1" identifier = number_literal) ;) (do_statement "do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));" do (compound_statement "{\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              }" { (if_statement "if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" if (parenthesized_expression "(local_b0 < 1)" ( (binary_expression "local_b0 < 1" identifier < number_literal) )) (compound_statement "{\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }" { (if_statement "if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" { (labeled_statement "LAB_00081f4a:\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_0002ef20(0);" (assignment_expression "iVar13 = FUN_0002ef20(0)" identifier = (call_expression "FUN_0002ef20(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\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_00081db1;" 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) = uVar25;" (assignment_expression "*(uint *)(iVar13 + 8) = uVar25" (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_b4 = (int *)FUN_000449c0();" (assignment_expression "local_b4 = (int *)FUN_000449c0()" identifier = (cast_expression "(int *)FUN_000449c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000449c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(int **)(param_2 + 0x30) = local_b4;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b4" (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_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }" if (parenthesized_expression "(local_b4 != (int *)0x0)" ( (binary_expression "local_b4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }" { (expression_statement "*(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;" (assignment_expression "*(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25" (pointer_expression "*(short *)(local_b4 + local_b0 * 4 + 4)" * (cast_expression "(short *)(local_b4 + local_b0 * 4 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b4 + local_b0 * 4 + 4)" ( (binary_expression "local_b4 + local_b0 * 4 + 4" (binary_expression "local_b4 + local_b0 * 4" identifier + (binary_expression "local_b0 * 4" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)uVar25" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) })) })) }) (else_clause "else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" else (if_statement "if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" if (parenthesized_expression "(uVar25 != *(ushort *)(local_b4 + 4))" ( (binary_expression "uVar25 != *(ushort *)(local_b4 + 4)" identifier != (pointer_expression "*(ushort *)(local_b4 + 4)" * (cast_expression "(ushort *)(local_b4 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b4 + 4)" ( (binary_expression "local_b4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = local_b4 + 1;" (assignment_expression "piVar14 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (do_statement "do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);" do (compound_statement "{\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\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 == local_b0) goto LAB_00081f4a;" if (parenthesized_expression "(iVar13 == local_b0)" ( (binary_expression "iVar13 == local_b0" identifier == identifier) )) (goto_statement "goto LAB_00081f4a;" 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 != uVar25)" ( (binary_expression "*puVar1 != uVar25" (pointer_expression "*puVar1" * identifier) != identifier) )) ;) })))) (expression_statement "uVar25 = uVar25 + 1;" (assignment_expression "uVar25 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)))" ( (binary_expression "(*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c))" (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 "((int)uVar25 <= **(int **)(param_2 + 0x1c))" ( (binary_expression "(int)uVar25 <= **(int **)(param_2 + 0x1c)" (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) 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 "piVar14 = (int *)FUN_0002e2d0();" (assignment_expression "piVar14 = (int *)FUN_0002e2d0()" identifier = (cast_expression "(int *)FUN_0002e2d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e2d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\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 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }" { (expression_statement "*piVar14 = local_b0;" (assignment_expression "*piVar14 = local_b0" (pointer_expression "*piVar14" * identifier) = identifier) ;) (if_statement "if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }" if (parenthesized_expression "(0 < local_b0)" ( (binary_expression "0 < local_b0" number_literal < identifier) )) (compound_statement "{\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 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_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);" do (compound_statement "{\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                }" { (expression_statement "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;" (assignment_expression "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + 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_b4 + iVar15 + 4) - 1" (pointer_expression "*(ushort *)(local_b4 + iVar15 + 4)" * (cast_expression "(ushort *)(local_b4 + iVar15 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b4 + iVar15 + 4)" ( (binary_expression "local_b4 + iVar15 + 4" (binary_expression "local_b4 + 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 "(local_b0 * 4 != iVar15)" ( (binary_expression "local_b0 * 4 != iVar15" (binary_expression "local_b0 * 4" identifier * number_literal) != identifier) )) ;) })) (expression_statement "FUN_0004c930();" (call_expression "FUN_0004c930()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int **)(param_2 + 0x30) = local_b4;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b4" (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_00053100();" (assignment_expression "uVar16 = FUN_00053100()" identifier = (call_expression "FUN_00053100()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar27 + 0x30) = uVar16;" (assignment_expression "*(undefined4 *)(iVar27 + 0x30) = uVar16" (pointer_expression "*(undefined4 *)(iVar27 + 0x30)" * (cast_expression "(undefined4 *)(iVar27 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x30)" ( (binary_expression "iVar27 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_a4 = (int *)0x0;\n              local_90 = 0;\n            }" { (expression_statement "local_a4 = (int *)0x0;" (assignment_expression "local_a4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" else (compound_statement "{\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_90 = piVar20[0xb] + 1;" (assignment_expression "local_90 = 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_000315c0(local_90,0);" (call_expression "FUN_000315c0(local_90,0)" identifier (argument_list "(local_90,0)" ( identifier , number_literal ))) ;) (expression_statement "local_a4 = (int *)FUN_00031ab0();" (assignment_expression "local_a4 = (int *)FUN_00031ab0()" identifier = (cast_expression "(int *)FUN_00031ab0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00031ab0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" if (parenthesized_expression "((local_a4 != (int *)0x0) && (0 < iVar15))" ( (binary_expression "(local_a4 != (int *)0x0) && (0 < iVar15)" (parenthesized_expression "(local_a4 != (int *)0x0)" ( (binary_expression "local_a4 != (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                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);" do (compound_statement "{\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "iVar17 = FUN_0004c840(iVar13);" (assignment_expression "iVar17 = FUN_0004c840(iVar13)" identifier = (call_expression "FUN_0004c840(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "local_a4[iVar13 + 5] = iVar17;" (assignment_expression "local_a4[iVar13 + 5] = iVar17" (subscript_expression "local_a4[iVar13 + 5]" identifier [ (binary_expression "iVar13 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)(local_a4[4] + iVar13) = 0;" (assignment_expression "*(undefined1 *)(local_a4[4] + iVar13) = 0" (pointer_expression "*(undefined1 *)(local_a4[4] + iVar13)" * (cast_expression "(undefined1 *)(local_a4[4] + iVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a4[4] + iVar13)" ( (binary_expression "local_a4[4] + iVar13" (subscript_expression "local_a4[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 "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 *)(iVar27 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar27 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar27 + 0x38)" * (cast_expression "(undefined4 *)(iVar27 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x38)" ( (binary_expression "iVar27 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053b50(unaff_EBP + 0x289fb);" (call_expression "FUN_00053b50(unaff_EBP + 0x289fb)" identifier (argument_list "(unaff_EBP + 0x289fb)" ( (binary_expression "unaff_EBP + 0x289fb" identifier + number_literal) ))) ;) (if_statement "if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }" if (parenthesized_expression "(*(int *)(iVar27 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar27 + 0x34) == 0" (pointer_expression "*(int *)(iVar27 + 0x34)" * (cast_expression "(int *)(iVar27 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x34)" ( (binary_expression "iVar27 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }" { (expression_statement "FUN_00053b50(unaff_EBP + 0x289fb);" (call_expression "FUN_00053b50(unaff_EBP + 0x289fb)" identifier (argument_list "(unaff_EBP + 0x289fb)" ( (binary_expression "unaff_EBP + 0x289fb" identifier + number_literal) ))) ;) })) (expression_statement "FUN_000781b0();" (call_expression "FUN_000781b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 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_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\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_94 = piVar20[0xb] + 2;" (assignment_expression "local_94 = piVar20[0xb] + 2" identifier = (binary_expression "piVar20[0xb] + 2" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = local_94;" (assignment_expression "piVar20[0xb] = local_94" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(local_9c,0);" (call_expression "FUN_000315c0(local_9c,0)" identifier (argument_list "(local_9c,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(local_94,0);" (call_expression "FUN_000315c0(local_94,0)" identifier (argument_list "(local_94,0)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n              local_94 = 0;\n              local_9c = 0;\n            }" else (compound_statement "{\n              local_94 = 0;\n              local_9c = 0;\n            }" { (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 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_000432e0();\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_000432e0();\n            }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" 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 "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar13 = unaff_EBP + 0x289ee;" (assignment_expression "iVar13 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) (if_statement "if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }" if (parenthesized_expression "((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87))" ( (binary_expression "(bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (parenthesized_expression "(bVar8 != 0x86)" ( (binary_expression "bVar8 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)" ( (comma_expression "iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87" (assignment_expression "iVar13 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) , (binary_expression "bVar8 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }" { (expression_statement "iVar13 = unaff_EBP + 0x289da;" (assignment_expression "iVar13 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }" if (parenthesized_expression "(bVar8 != 0x85)" ( (binary_expression "bVar8 != 0x85" identifier != number_literal) )) (compound_statement "{\n                iVar13 = unaff_EBP + 0x289f5;\n              }" { (expression_statement "iVar13 = unaff_EBP + 0x289f5;" (assignment_expression "iVar13 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) })) })) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fc9,iVar13)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fc9" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000315c0(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 *)(iVar27 + 8) = local_9c;" (assignment_expression "*(int *)(iVar27 + 8) = local_9c" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fd4)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fd4" identifier + number_literal) ))) ;) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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 (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar17 = piVar28[0x1a] + -1;\n            }" { (expression_statement "iVar17 = piVar28[0x1a] + -1;" (assignment_expression "iVar17 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar13 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar13 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 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] + iVar17 * 0x14;\n            }" { (expression_statement "iVar13 = piVar28[0x19] + iVar17 * 0x14;" (assignment_expression "iVar13 = piVar28[0x19] + iVar17 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar17 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar17 * 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 "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000315c0(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 "uVar21 = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "uVar21 = *(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_94;" (assignment_expression "*(int *)(param_2 + 8) = local_94" (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_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fd9)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fd9" identifier + number_literal) ))) ;) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar21" (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_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);" (assignment_expression "uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" identifier = (call_expression "FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" identifier (argument_list "(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" ( (pointer_expression "&local_4c" & identifier) , (pointer_expression "&local_48" & identifier) , identifier , (binary_expression "iVar15 + 3" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\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_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }" { (expression_statement "local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);" (assignment_expression "local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" identifier = (call_expression "FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" identifier (argument_list "(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" ( (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_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }" if (parenthesized_expression "((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0))" ( (binary_expression "(local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)" (parenthesized_expression "(local_a4 != (int *)0x0)" ( (binary_expression "local_a4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)" ( (comma_expression "iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "iVar15 = *local_a4" identifier = (pointer_expression "*local_a4" * identifier)) , (comma_expression "*local_a4 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "*local_a4 = iVar15 + -1" (pointer_expression "*local_a4" * 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_0002a720();\n            }" { (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" identifier = identifier) ;) (expression_statement "local_90 = iVar18;" (assignment_expression "local_90 = iVar18" identifier = identifier) ;) (if_statement "if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\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_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }" { (expression_statement "iVar15 = FUN_000315c0(local_80,0);" (assignment_expression "iVar15 = FUN_000315c0(local_80,0)" identifier = (call_expression "FUN_000315c0(local_80,0)" identifier (argument_list "(local_80,0)" ( identifier , number_literal )))) ;) (expression_statement "local_90 = FUN_000315c0(iVar18,0);" (assignment_expression "local_90 = FUN_000315c0(iVar18,0)" identifier = (call_expression "FUN_000315c0(iVar18,0)" identifier (argument_list "(iVar18,0)" ( identifier , number_literal )))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" identifier = (call_expression "FUN_00026b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" if (parenthesized_expression "(uVar12 == 0x87)" ( (binary_expression "uVar12 == 0x87" identifier == number_literal) )) (compound_statement "{\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }" { (if_statement "if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar27 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar27 + 2)" * (cast_expression "(short *)(iVar27 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 2)" ( (binary_expression "iVar27 + 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 *)(iVar27 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar27 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar27 + 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 *)(iVar27 + 2)" * (cast_expression "(short *)(iVar27 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 2)" ( (binary_expression "iVar27 + 2" identifier + number_literal) ))))) ;) })) (expression_statement "local_a4 = (int *)FUN_000315c0(uVar16,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(uVar16,0)" identifier = (cast_expression "(int *)FUN_000315c0(uVar16,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(uVar16,0)" identifier (argument_list "(uVar16,0)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) (expression_statement "local_ac = iVar15;" (assignment_expression "local_ac = iVar15" identifier = identifier) ;) }) (else_clause "else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" else (compound_statement "{\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" { (expression_statement "local_ac = FUN_000315c0(uVar16,0);" (assignment_expression "local_ac = FUN_000315c0(uVar16,0)" identifier = (call_expression "FUN_000315c0(uVar16,0)" identifier (argument_list "(uVar16,0)" ( identifier , number_literal )))) ;) (expression_statement "FUN_000315c0(iVar18,0);" (call_expression "FUN_000315c0(iVar18,0)" identifier (argument_list "(iVar18,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" identifier (argument_list "(local_ac,0)" ( identifier , number_literal ))) ;) (expression_statement "local_a4 = (int *)FUN_000315c0(uVar16,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(uVar16,0)" identifier = (cast_expression "(int *)FUN_000315c0(uVar16,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(uVar16,0)" identifier (argument_list "(uVar16,0)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) (if_statement "if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }" if (parenthesized_expression "(uVar12 != 0x85)" ( (binary_expression "uVar12 != 0x85" identifier != number_literal) )) (compound_statement "{\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }" { (expression_statement "local_a4 = (int *)FUN_000315c0(iVar15,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(iVar15,0)" identifier = (cast_expression "(int *)FUN_000315c0(iVar15,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) })) }))) (expression_statement "iVar18 = piVar28[0x1a];" (assignment_expression "iVar18 = piVar28[0x1a]" identifier = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\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_000315c0(local_80,0);\n            }" { (expression_statement "FUN_000315c0(local_80,0);" (call_expression "FUN_000315c0(local_80,0)" identifier (argument_list "(local_80,0)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" identifier (argument_list "(local_ac,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) (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 < iVar17) {\n              iVar15 = iVar17;\n            }" if (parenthesized_expression "(-1 < iVar17)" ( (binary_expression "-1 < iVar17" number_literal < identifier) )) (compound_statement "{\n              iVar15 = iVar17;\n            }" { (expression_statement "iVar15 = iVar17;" (assignment_expression "iVar15 = iVar17" identifier = identifier) ;) })) (expression_statement "iVar11 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar11 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" 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_000315c0(local_90,0);" (call_expression "FUN_000315c0(local_90,0)" identifier (argument_list "(local_90,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" identifier (argument_list "(local_ac,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_00032090(0xfffffff1);" (call_expression "FUN_00032090(0xfffffff1)" identifier (argument_list "(0xfffffff1)" ( number_literal ))) ;) (expression_statement "FUN_000315c0(local_30,local_b0);" (call_expression "FUN_000315c0(local_30,local_b0)" identifier (argument_list "(local_30,local_b0)" ( identifier , identifier ))) ;) (expression_statement "FUN_00032090(0xfffffff7);" (call_expression "FUN_00032090(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_000315c0(local_a4,iVar18);" (call_expression "FUN_000315c0(local_a4,iVar18)" identifier (argument_list "(local_a4,iVar18)" ( identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\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_00043210();\n            }" { (expression_statement "FUN_00043210();" (call_expression "FUN_00043210()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(param_2 + 0x34) = iVar27;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar27" (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 **)(iVar27 + 0x38) = param_2;" (assignment_expression "*(byte **)(iVar27 + 0x38) = param_2" (pointer_expression "*(byte **)(iVar27 + 0x38)" * (cast_expression "(byte **)(iVar27 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar27 + 0x38)" ( (binary_expression "iVar27 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = piVar20[0x36];" (assignment_expression "iVar18 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(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 (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 "iVar15 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar15 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = 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                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }" { (expression_statement "iVar15 = piVar28[0x19] + iVar18 * 0x14;" (assignment_expression "iVar15 = 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 "iVar18 = *(int *)(iVar15 + 8);" (assignment_expression "iVar18 = *(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] = iVar18;" (assignment_expression "piVar20[0x36] = iVar18" (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_00081db1;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }" if (parenthesized_expression "(*(int *)(iVar18 + 0x34) == 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) )) (compound_statement "{\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }" { (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fdf)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fdf" identifier + number_literal) ))) ;) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fee)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fee" identifier + number_literal) ))) ;) })) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" if (parenthesized_expression "(bVar8 == 0x85)" ( (binary_expression "bVar8 == 0x85" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }" { (expression_statement "*(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);" (assignment_expression "*(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8)" (pointer_expression "*(undefined4 *)(iVar18 + 8)" * (cast_expression "(undefined4 *)(iVar18 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 8)" ( (binary_expression "iVar18 + 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 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc)" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 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 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar18 + 0x3c)" * (cast_expression "(undefined4 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 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_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" 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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }" { (expression_statement "local_c0 = *(int *)(iVar18 + 8);" (assignment_expression "local_c0 = *(int *)(iVar18 + 8)" identifier = (pointer_expression "*(int *)(iVar18 + 8)" * (cast_expression "(int *)(iVar18 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 8)" ( (binary_expression "iVar18 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar18 + 0xc);" (assignment_expression "uVar16 = *(undefined4 *)(iVar18 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 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_c0;" (assignment_expression "*(int *)(param_2 + 8) = local_c0" (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_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }" { (expression_statement "uVar30 = FUN_000315c0(0,0);" (assignment_expression "uVar30 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);" (assignment_expression "uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar30 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar30 >> 0x20)" ( (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (int)uVar30;" (assignment_expression "local_c0 = (int)uVar30" identifier = (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar27 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar27 = *(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 (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }" { (expression_statement "FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16)" identifier (argument_list "(iVar27 + 1,iVar27,uVar16,uVar16)" ( (binary_expression "iVar27 + 1" identifier + number_literal) , identifier , identifier , identifier ))) ;) })) })) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x289da)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x289da" identifier + number_literal) ))) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar18" (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 "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" identifier = (call_expression "FUN_00026b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }" if (parenthesized_expression "(((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c))" ( (binary_expression "((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)" (parenthesized_expression "((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0))" ( (binary_expression "(*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)" (parenthesized_expression "(*(int *)(iVar18 + 0x3c) != 0)" ( (binary_expression "*(int *)(iVar18 + 0x3c) != 0" (pointer_expression "*(int *)(iVar18 + 0x3c)" * (cast_expression "(int *)(iVar18 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar18 = FUN_00029640(), iVar18 != 0)" ( (comma_expression "iVar18 = FUN_00029640(), iVar18 != 0" (assignment_expression "iVar18 = FUN_00029640()" identifier = (call_expression "FUN_00029640()" identifier (argument_list "()" ( )))) , (binary_expression "iVar18 != 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                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }" { (expression_statement "sVar10 = *(short *)(param_2 + 2);" (assignment_expression "sVar10 = *(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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }" { (if_statement "if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" if (parenthesized_expression "(local_3c == 1)" ( (binary_expression "local_3c == 1" identifier == number_literal) )) (compound_statement "{\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }" { (if_statement "if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" if (parenthesized_expression "(0 < sVar10)" ( (binary_expression "0 < sVar10" number_literal < identifier) )) (compound_statement "{\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00083ad6;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" else (compound_statement "{\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" { (expression_statement "uVar22 = local_3c;" (assignment_expression "uVar22 = local_3c" identifier = identifier) ;) (expression_statement "uVar25 = uVar12;" (assignment_expression "uVar25 = uVar12" identifier = identifier) ;) (expression_statement "sVar7 = 0x28;" (assignment_expression "sVar7 = 0x28" identifier = number_literal) ;) (do_statement "do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);" do (compound_statement "{\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    }" { (expression_statement "sVar23 = sVar7;" (assignment_expression "sVar23 = sVar7" identifier = identifier) ;) (expression_statement "uVar5 = uVar22 * 2;" (assignment_expression "uVar5 = uVar22 * 2" identifier = (binary_expression "uVar22 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;" if (parenthesized_expression "((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0)" ( (binary_expression "(uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0" (binary_expression "(uVar25 & 0x7fffffff) != 0" (parenthesized_expression "(uVar25 & 0x7fffffff)" ( (binary_expression "uVar25 & 0x7fffffff" identifier & number_literal) )) != number_literal) || (binary_expression "(int)uVar22 < 0" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = uVar5;" (assignment_expression "uVar22 = uVar5" identifier = identifier) ;) (expression_statement "sVar7 = sVar23 + -10;" (assignment_expression "sVar7 = sVar23 + -10" identifier = (binary_expression "sVar23 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < 8)" ( (binary_expression "uVar5 < 8" identifier < number_literal) )) ;) (if_statement "if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" if (parenthesized_expression "((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10)" ( (binary_expression "(short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10" (cast_expression "(short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP))" ( (binary_expression "sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" (binary_expression "sVar23 + -0x14" identifier + number_literal) + (pointer_expression "*(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" * (cast_expression "(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" ( (binary_expression "&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (uVar5 & 7) * 2" (pointer_expression "&UNK_0002f45f" & identifier) + (binary_expression "(uVar5 & 7) * 2" (parenthesized_expression "(uVar5 & 7)" ( (binary_expression "uVar5 & 7" identifier & number_literal) )) * number_literal)) + identifier) ))))) ))) < identifier) )) (compound_statement "{\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" { (expression_statement "sVar10 = 0x28;" (assignment_expression "sVar10 = 0x28" identifier = number_literal) ;) (expression_statement "local_bc = local_3c;" (assignment_expression "local_bc = local_3c" identifier = identifier) ;) (do_statement "do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);" do (compound_statement "{\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      }" { (expression_statement "sVar10 = sVar10 + -10;" (assignment_expression "sVar10 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) (expression_statement "bVar29 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar29 = 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)bVar29 != 0) break;" if (parenthesized_expression "(uVar12 * 2 + (uint)bVar29 != 0)" ( (binary_expression "uVar12 * 2 + (uint)bVar29 != 0" (binary_expression "uVar12 * 2 + (uint)bVar29" (binary_expression "uVar12 * 2" identifier * number_literal) + (cast_expression "(uint)bVar29" ( (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_00083ac3;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }" else (compound_statement "{\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }" { (if_statement "if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 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                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" { (for_statement "for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }" for ( ; (binary_expression "uVar12 >> uVar25 == 0" (binary_expression "uVar12 >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar25 = uVar25 ^ 0x1f;" (assignment_expression "uVar25 = uVar25 ^ 0x1f" identifier = (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }" else (compound_statement "{\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" { (for_statement "for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }" for ( ; (binary_expression "local_3c >> uVar25 == 0" (binary_expression "local_3c >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar25 = (uVar25 ^ 0x1f) + 0x20;" (assignment_expression "uVar25 = (uVar25 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar25 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar25 ^ 0x1f)" ( (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar25 = 0x3c - uVar25;" (assignment_expression "uVar25 = 0x3c - uVar25" identifier = (binary_expression "0x3c - uVar25" number_literal - identifier)) ;) (expression_statement "bVar8 = (byte)uVar25 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar25 & 0x1f" identifier = (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;" (assignment_expression "uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8" identifier = (binary_expression "local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (binary_expression "local_3c >> bVar8" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }" if (parenthesized_expression "((uVar25 & 0x20) != 0)" ( (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" ( (binary_expression "uVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }" { (expression_statement "uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);" (assignment_expression "uVar22 = uVar12 >> ((byte)uVar25 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar25 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }" if (parenthesized_expression "((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10)" ( (binary_expression "(short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10" (cast_expression "(short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP))" ( (binary_expression "(short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" (binary_expression "(short)uVar25 * 10 + 0x1e" (binary_expression "(short)uVar25 * 10" (cast_expression "(short)uVar25" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal) + (pointer_expression "*(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" * (cast_expression "(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" ( (binary_expression "&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (uVar22 & 7) * 2" (pointer_expression "&UNK_0002f45f" & identifier) + (binary_expression "(uVar22 & 7) * 2" (parenthesized_expression "(uVar22 & 7)" ( (binary_expression "uVar22 & 7" identifier & number_literal) )) * number_literal)) + identifier) ))))) ))) < identifier) )) (compound_statement "{\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }" { (if_statement "if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 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                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" { (for_statement "for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }" for ( ; (binary_expression "uVar12 >> uVar25 == 0" (binary_expression "uVar12 >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar25 = uVar25 ^ 0x1f;" (assignment_expression "uVar25 = uVar25 ^ 0x1f" identifier = (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }" else (compound_statement "{\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" { (for_statement "for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }" for ( ; (binary_expression "local_3c >> uVar25 == 0" (binary_expression "local_3c >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar25 = (uVar25 ^ 0x1f) + 0x20;" (assignment_expression "uVar25 = (uVar25 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar25 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar25 ^ 0x1f)" ( (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar25 = 0x3c - uVar25;" (assignment_expression "uVar25 = 0x3c - uVar25" identifier = (binary_expression "0x3c - uVar25" number_literal - identifier)) ;) (expression_statement "sVar10 = (short)uVar25 * 10 + 0x28;" (assignment_expression "sVar10 = (short)uVar25 * 10 + 0x28" identifier = (binary_expression "(short)uVar25 * 10 + 0x28" (binary_expression "(short)uVar25 * 10" (cast_expression "(short)uVar25" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar25 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar25 & 0x1f" identifier = (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;" (assignment_expression "local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8" identifier = (binary_expression "local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (binary_expression "local_3c >> bVar8" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }" if (parenthesized_expression "((uVar25 & 0x20) != 0)" ( (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" ( (binary_expression "uVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }" { (expression_statement "local_bc = uVar12 >> ((byte)uVar25 & 0x1f);" (assignment_expression "local_bc = uVar12 >> ((byte)uVar25 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar25 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (labeled_statement "LAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);" statement_identifier : (expression_statement "sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);" (assignment_expression "sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" identifier = (binary_expression "sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (binary_expression "sVar10 + -10" identifier + number_literal) + (pointer_expression "*(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" * (cast_expression "(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" ( (binary_expression "&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (local_bc & 7) * 2" (pointer_expression "&UNK_0002f45f" & identifier) + (binary_expression "(local_bc & 7) * 2" (parenthesized_expression "(local_bc & 7)" ( (binary_expression "local_bc & 7" identifier & number_literal) )) * number_literal)) + identifier) )))))) ;)) (labeled_statement "LAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;" statement_identifier : (expression_statement "*(short *)(param_2 + 2) = sVar10;" (assignment_expression "*(short *)(param_2 + 2) = sVar10" (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_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }" { (expression_statement "iVar18 = local_c8[0x1a] + -1;" (assignment_expression "iVar18 = 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_c0) {\n                  iVar18 = local_c0;\n                }" if (parenthesized_expression "(-1 < local_c0)" ( (binary_expression "-1 < local_c0" number_literal < identifier) )) (compound_statement "{\n                  iVar18 = local_c0;\n                }" { (expression_statement "iVar18 = local_c0;" (assignment_expression "iVar18 = local_c0" identifier = identifier) ;) })) (expression_statement "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 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                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }" { (expression_statement "iVar27 = iVar18 * 0x14 + local_c8[0x19];" (assignment_expression "iVar27 = iVar18 * 0x14 + local_c8[0x19]" identifier = (binary_expression "iVar18 * 0x14 + local_c8[0x19]" (binary_expression "iVar18 * 0x14" identifier * number_literal) + (subscript_expression "local_c8[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(iVar27 + 8) = local_c8[0x1a];" (assignment_expression "*(int *)(iVar27 + 8) = local_c8[0x1a]" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) )))) = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_00082ed0;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" else (compound_statement "{\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" { (if_statement "if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" if (parenthesized_expression "((bVar8 == 0x86) || (bVar8 == 0x84))" ( (binary_expression "(bVar8 == 0x86) || (bVar8 == 0x84)" (parenthesized_expression "(bVar8 == 0x86)" ( (binary_expression "bVar8 == 0x86" identifier == number_literal) )) || (parenthesized_expression "(bVar8 == 0x84)" ( (binary_expression "bVar8 == 0x84" identifier == number_literal) ))) )) (compound_statement "{\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" { (if_statement "if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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                local_c0 = local_70;\n              }" { (expression_statement "local_c0 = local_70;" (assignment_expression "local_c0 = local_70" identifier = identifier) ;) }) (else_clause "else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n              }" else (compound_statement "{\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n              }" { (expression_statement "local_c0 = piVar20[10];" (assignment_expression "local_c0 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = local_c0 + 1;" (assignment_expression "piVar20[10] = local_c0 + 1" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_000315c0(0,0);" (assignment_expression "uVar16 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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 "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (do_statement "do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);" do (compound_statement "{\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                }" { (expression_statement "pbVar26 = pbVar4;" (assignment_expression "pbVar26 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar4 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar4 = *(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 "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (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 = local_c0;" (assignment_expression "local_38 = local_c0" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 != (byte *)0x0) goto LAB_00082b00;" 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_00082b00;" goto statement_identifier ;)) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }" if (parenthesized_expression "(bVar8 == 0x86)" ( (binary_expression "bVar8 == 0x86" identifier == number_literal) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\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 "iVar27 = unaff_EBP + 0x289ee;" (assignment_expression "iVar27 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) }) (else_clause "else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }" else (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\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 "iVar27 = unaff_EBP + 0x289da;" (assignment_expression "iVar27 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }" if (parenthesized_expression "(bVar8 != 0x85)" ( (binary_expression "bVar8 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }" { (expression_statement "iVar27 = unaff_EBP + 0x289e4;" (assignment_expression "iVar27 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }" if (parenthesized_expression "(bVar8 != 0x87)" ( (binary_expression "bVar8 != 0x87" identifier != number_literal) )) (compound_statement "{\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }" { (expression_statement "iVar27 = unaff_EBP + 0x289f5;" (assignment_expression "iVar27 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) })) })) }))) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x29001,iVar27)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x29001" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar18" (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                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }" if (parenthesized_expression "(*param_2 == 0x84)" ( (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }" { (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" identifier = (call_expression "FUN_00026b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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_000432e0();\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_000432e0();\n              }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" 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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }" { (expression_statement "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = 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 "uVar16 = FUN_000781b0();" (assignment_expression "uVar16 = FUN_000781b0()" identifier = (call_expression "FUN_000781b0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(iVar18,0,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar18,0,uVar16,uVar16)" identifier (argument_list "(iVar18,0,uVar16,uVar16)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar27 = local_c8[0x1a];" (assignment_expression "iVar27 = local_c8[0x1a]" identifier = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00079470(0,0,&local_74,iVar11,iVar18);" (call_expression "FUN_00079470(0,0,&local_74,iVar11,iVar18)" identifier (argument_list "(0,0,&local_74,iVar11,iVar18)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "uVar21 = FUN_00031430();" (assignment_expression "uVar21 = FUN_00031430()" identifier = (call_expression "FUN_00031430()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar31 = uVar21;" (assignment_expression "uVar31 = uVar21" identifier = identifier) ;) (expression_statement "FUN_000315c0(iVar27,0,uVar21,uVar21);" (call_expression "FUN_000315c0(iVar27,0,uVar21,uVar21)" identifier (argument_list "(iVar27,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);" statement_identifier : (expression_statement "FUN_000315c0(0,0,uVar21,uVar31);" (call_expression "FUN_000315c0(0,0,uVar21,uVar31)" identifier (argument_list "(0,0,uVar21,uVar31)" ( number_literal , number_literal , identifier , identifier ))) ;)) })) (labeled_statement "LAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }" statement_identifier : (if_statement "if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\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                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }" { (expression_statement "iVar18 = piVar20[0x36];" (assignment_expression "iVar18 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 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 (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 "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 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                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }" { (expression_statement "iVar27 = iVar18 * 0x14 + piVar28[0x19];" (assignment_expression "iVar27 = iVar18 * 0x14 + piVar28[0x19]" identifier = (binary_expression "iVar18 * 0x14 + piVar28[0x19]" (binary_expression "iVar18 * 0x14" identifier * number_literal) + (subscript_expression "piVar28[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar18 = *(int *)(iVar27 + 8);" (assignment_expression "iVar18 = *(int *)(iVar27 + 8)" identifier = (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "piVar20[0x36] = iVar18;" (assignment_expression "piVar20[0x36] = iVar18" (subscript_expression "piVar20[0x36]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (piVar20[9] == 0) goto LAB_00082732;" if (parenthesized_expression "(piVar20[9] == 0)" ( (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00082732;" goto statement_identifier ;)) (goto_statement "goto LAB_0008273c;" goto statement_identifier ;) })) (expression_statement "iVar27 = piVar20[10];" (assignment_expression "iVar27 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = iVar27 + 2;" (assignment_expression "piVar20[10] = iVar27 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "iVar27 + 2" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_000315c0(0,0);" (assignment_expression "uVar16 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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 "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (do_statement "do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (byte *)0x0);" do (compound_statement "{\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            }" { (expression_statement "pbVar26 = pbVar4;" (assignment_expression "pbVar26 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar4 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar4 = *(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 "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (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 = iVar27;" (assignment_expression "local_38 = iVar27" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\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              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }" { (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *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) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0x18) = uVar21" (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 "iVar11 = unaff_EBP + 0x289ee;" (assignment_expression "iVar11 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) (if_statement "if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }" if (parenthesized_expression "((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87))" ( (binary_expression "(bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (parenthesized_expression "(bVar8 != 0x86)" ( (binary_expression "bVar8 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)" ( (comma_expression "iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87" (assignment_expression "iVar11 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) , (binary_expression "bVar8 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }" { (expression_statement "iVar11 = unaff_EBP + 0x289da;" (assignment_expression "iVar11 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }" if (parenthesized_expression "(bVar8 != 0x85)" ( (binary_expression "bVar8 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar11 = unaff_EBP + 0x289f5;\n                }" { (expression_statement "iVar11 = unaff_EBP + 0x289f5;" (assignment_expression "iVar11 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) })) })) (expression_statement "local_38 = iVar27 + 1;" (assignment_expression "local_38 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x29001,iVar11)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x29001" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar18" (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 *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar18 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar18 + 2)" * (cast_expression "(short *)(iVar18 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 2)" ( (binary_expression "iVar18 + 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 *)(iVar18 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar18 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar18 + 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 *)(iVar18 + 2)" * (cast_expression "(short *)(iVar18 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 2)" ( (binary_expression "iVar18 + 2" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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_000432e0();\n              }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" 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                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\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                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }" { (expression_statement "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar27 = piVar20[0xe] + -2;" (assignment_expression "iVar27 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar27;" (assignment_expression "piVar20[0xe] = iVar27" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar16 = FUN_000781b0();" (assignment_expression "uVar16 = FUN_000781b0()" identifier = (call_expression "FUN_000781b0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(iVar18,0,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar18,0,uVar16,uVar16)" identifier (argument_list "(iVar18,0,uVar16,uVar16)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\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                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }" { (expression_statement "iVar11 = piVar20[0xb] + 1;" (assignment_expression "iVar11 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = iVar11;" (assignment_expression "piVar20[0xb] = iVar11" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar28 = piVar20;" (assignment_expression "piVar28 = piVar20" identifier = identifier) ;) }) (else_clause "else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }" else (compound_statement "{\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }" { (expression_statement "bVar8 = *(char *)((int)piVar20 + 0x13) - 1;" (assignment_expression "bVar8 = *(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) = bVar8;" (assignment_expression "*(byte *)((int)piVar20 + 0x13) = bVar8" (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 "iVar11 = piVar20[bVar8 + 0x26];" (assignment_expression "iVar11 = piVar20[bVar8 + 0x26]" identifier = (subscript_expression "piVar20[bVar8 + 0x26]" identifier [ (binary_expression "bVar8 + 0x26" identifier + number_literal) ])) ;) (expression_statement "piVar28 = extraout_ECX;" (assignment_expression "piVar28 = extraout_ECX" identifier = identifier) ;) }))) (expression_statement "uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);" (assignment_expression "uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28)" identifier = (call_expression "FUN_000315c0(iVar11,0,piVar28,piVar28)" identifier (argument_list "(iVar11,0,piVar28,piVar28)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "FUN_000316b0(iVar27,iVar11,0);" (call_expression "FUN_000316b0(iVar27,iVar11,0)" identifier (argument_list "(iVar27,iVar11,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (iVar11 != 0) {\n                  FUN_00029c40();\n                }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00029c40();\n                }" { (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_00079470(0,0,&local_74,iVar27,iVar18);" (call_expression "FUN_00079470(0,0,&local_74,iVar27,iVar18)" identifier (argument_list "(0,0,&local_74,iVar27,iVar18)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar21 = extraout_ECX_00;" (assignment_expression "uVar21 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "uVar31 = extraout_ECX_00;" (assignment_expression "uVar31 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);" (call_expression "FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00)" identifier (argument_list "(uVar16,0,extraout_ECX_00,extraout_ECX_00)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (goto_statement "goto LAB_00083517;" goto statement_identifier ;) })) (goto_statement "goto LAB_00082ed0;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00082b00:\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_00081db1;" 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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }" { (labeled_statement "LAB_000827ee:\n          iVar18 = FUN_0003c520(0,0);" statement_identifier : (expression_statement "iVar18 = FUN_0003c520(0,0);" (assignment_expression "iVar18 = FUN_0003c520(0,0)" identifier = (call_expression "FUN_0003c520(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;)) (if_statement "if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" { (expression_statement "iVar17 = piVar20[0xe] + -1;" (assignment_expression "iVar17 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar17;" (assignment_expression "piVar20[0xe] = iVar17" (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_000781b0();" (call_expression "FUN_000781b0()" 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 "iVar18 = *piVar28;" (assignment_expression "iVar18 = *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 "iVar27 = *(int *)(param_2 + 8);" (assignment_expression "iVar27 = *(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 "iVar11 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar11 = *(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 "iVar13 = extraout_EDX;" (assignment_expression "iVar13 = extraout_EDX" identifier = identifier) ;) (if_statement "if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = *(byte *)((int)piVar28 + 0x2d);" (assignment_expression "bVar8 = *(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 (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }" while (parenthesized_expression "(((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18)))" ( (parenthesized_expression "((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))" ( (binary_expression "(bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18)" (binary_expression "(bVar8 & 0x20) == 0" (parenthesized_expression "(bVar8 & 0x20)" ( (binary_expression "bVar8 & 0x20" identifier & number_literal) )) == number_literal) && (parenthesized_expression "(iVar19 = iVar19 + 1, iVar19 != iVar18)" ( (comma_expression "iVar19 = iVar19 + 1, iVar19 != iVar18" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) , (binary_expression "iVar19 != iVar18" identifier != identifier)) ))) )) )) (compound_statement "{\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }" { (expression_statement "iVar13 = iVar19 * 0x44;" (assignment_expression "iVar13 = iVar19 * 0x44" identifier = (binary_expression "iVar19 * 0x44" identifier * number_literal)) ;) (expression_statement "bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);" (assignment_expression "bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d)" identifier = (pointer_expression "*(byte *)((int)piVar28 + iVar13 + 0x2d)" * (cast_expression "(byte *)((int)piVar28 + iVar13 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar28 + iVar13 + 0x2d)" ( (binary_expression "(int)piVar28 + iVar13 + 0x2d" (binary_expression "(int)piVar28 + iVar13" (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 "iVar18 = piVar20[0xb] + 1;" (assignment_expression "iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0,iVar13,iVar13);" (call_expression "FUN_000315c0(iVar18,local_c0,iVar13,iVar13)" identifier (argument_list "(iVar18,local_c0,iVar13,iVar13)" ( identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00082930;" 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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0,piVar20,piVar20);" (call_expression "FUN_000315c0(iVar18,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar18,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(local_c0,0);" (call_expression "FUN_000315c0(local_c0,0)" identifier (argument_list "(local_c0,0)" ( identifier , number_literal ))) ;) (expression_statement "piVar28 = extraout_EDX_00;" (assignment_expression "piVar28 = extraout_EDX_00" identifier = identifier) ;) (labeled_statement "LAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" statement_identifier : (if_statement "if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" if (parenthesized_expression "(local_bc != 0)" ( (binary_expression "local_bc != 0" identifier != number_literal) )) (compound_statement "{\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" { (expression_statement "uVar21 = FUN_000315c0(0,0,piVar28,piVar28);" (assignment_expression "uVar21 = FUN_000315c0(0,0,piVar28,piVar28)" identifier = (call_expression "FUN_000315c0(0,0,piVar28,piVar28)" identifier (argument_list "(0,0,piVar28,piVar28)" ( number_literal , number_literal , identifier , identifier )))) ;) (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) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar21" (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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fb4)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fb4)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fb4" identifier + number_literal) ))) ;) (expression_statement "uVar30 = FUN_00070950();" (assignment_expression "uVar30 = FUN_00070950()" identifier = (call_expression "FUN_00070950()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);" (assignment_expression "uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar30 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar30 >> 0x20)" ( (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (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 ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\n              }" if (parenthesized_expression "((int)uVar30 == 0)" ( (binary_expression "(int)uVar30 == 0" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\n              }" { (expression_statement "local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);" (assignment_expression "local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21)" identifier = (call_expression "FUN_000315c0(iVar17,0,uVar21,uVar21)" identifier (argument_list "(iVar17,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (if_statement "if (piVar14 == (int *)0x0) goto LAB_00083923;" 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_00083923;" goto statement_identifier ;)) (expression_statement "uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);" (assignment_expression "uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21)" identifier = (call_expression "FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21)" identifier (argument_list "(*piVar14 + 1,iVar18,uVar21,uVar21)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) , identifier , identifier , identifier )))) ;) (labeled_statement "LAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);" statement_identifier : (expression_statement "FUN_000315c0(0,0,uVar21,uVar21);" (call_expression "FUN_000315c0(0,0,uVar21,uVar21)" identifier (argument_list "(0,0,uVar21,uVar21)" ( number_literal , number_literal , identifier , identifier ))) ;)) (expression_statement "piVar28 = (int *)(piVar20[0xe] + -1);" (assignment_expression "piVar28 = (int *)(piVar20[0xe] + -1)" identifier = (cast_expression "(int *)(piVar20[0xe] + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20[0xe] + -1)" ( (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "piVar20[0xe] = (int)piVar28;" (assignment_expression "piVar20[0xe] = (int)piVar28" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = (cast_expression "(int)piVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar11) {\n                  FUN_00031970();\n                }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n                  FUN_00031970();\n                }" { (expression_statement "FUN_00031970();" (call_expression "FUN_00031970()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);" (assignment_expression "uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17)" identifier = (call_expression "FUN_00079470(0,0,&local_74,piVar28,iVar17)" identifier (argument_list "(0,0,&local_74,piVar28,iVar17)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }" { (expression_statement "FUN_000315c0(iVar17,0,uVar21,uVar21);" (call_expression "FUN_000315c0(iVar17,0,uVar21,uVar21)" identifier (argument_list "(iVar17,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier ))) ;) })) (expression_statement "uVar21 = FUN_00031430();" (assignment_expression "uVar21 = FUN_00031430()" identifier = (call_expression "FUN_00031430()" 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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fba,uVar21)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fba" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" 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) ;) (expression_statement "piVar28 = piVar20;" (assignment_expression "piVar28 = piVar20" identifier = identifier) ;) }) (else_clause "else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }" else (compound_statement "{\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }" { (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21)" identifier (argument_list "(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21)" ( identifier , (binary_expression "unaff_EBP + 0x2b91b" identifier + number_literal) , identifier , identifier ))) ;) }))) (expression_statement "FUN_000315c0(local_c0,0,piVar28,piVar28);" (call_expression "FUN_000315c0(local_c0,0,piVar28,piVar28)" identifier (argument_list "(local_c0,0,piVar28,piVar28)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0);" (call_expression "FUN_000315c0(iVar18,local_c0)" identifier (argument_list "(iVar18,local_c0)" ( identifier , identifier ))) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (labeled_statement "LAB_00082930:\n                FUN_0004c930();" statement_identifier : (expression_statement "FUN_0004c930();" (call_expression "FUN_0004c930()" identifier (argument_list "()" ( ))) ;)) (expression_statement "FUN_000315c0(*piVar14 + 2,0);" (call_expression "FUN_000315c0(*piVar14 + 2,0)" identifier (argument_list "(*piVar14 + 2,0)" ( (binary_expression "*piVar14 + 2" (pointer_expression "*piVar14" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "FUN_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "piVar28 = piVar14;" (assignment_expression "piVar28 = piVar14" identifier = identifier) ;) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" identifier = identifier) ;) (goto_statement "goto LAB_00082986;" 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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0,piVar20,piVar20);" (call_expression "FUN_000315c0(iVar18,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar18,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(local_c0,0);" (call_expression "FUN_000315c0(local_c0,0)" identifier (argument_list "(local_c0,0)" ( 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 "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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fb4)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fb4)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fb4" identifier + number_literal) ))) ;) (expression_statement "iVar13 = FUN_00070950();" (assignment_expression "iVar13 = FUN_00070950()" identifier = (call_expression "FUN_00070950()" 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 (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }" { (expression_statement "local_c0 = FUN_000315c0(iVar17,0,0,0);" (assignment_expression "local_c0 = FUN_000315c0(iVar17,0,0,0)" identifier = (call_expression "FUN_000315c0(iVar17,0,0,0)" identifier (argument_list "(iVar17,0,0,0)" ( identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (labeled_statement "LAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);" statement_identifier : (expression_statement "uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);" (assignment_expression "uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21)" identifier = (call_expression "FUN_000315c0(iVar18,0,uVar21,uVar21)" identifier (argument_list "(iVar18,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier )))) ;)) (goto_statement "goto LAB_00083747;" goto statement_identifier ;) })) }))) (if_statement "if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\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_000433a0();\n            }" { (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" 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_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }" else (compound_statement "{\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }" { (labeled_statement "LAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);" statement_identifier : (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7)" identifier (argument_list "(piVar20,unaff_EBP + 0x2b8e7)" ( identifier , (binary_expression "unaff_EBP + 0x2b8e7" identifier + number_literal) ))) ;)) }))) (if_statement "if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\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_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }" { (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 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_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }" statement_identifier : (if_statement "if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\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            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }" { (expression_statement "iVar18 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar18 = **(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_00031ab0();" (assignment_expression "piVar20 = (int *)FUN_00031ab0()" identifier = (cast_expression "(int *)FUN_00031ab0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00031ab0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\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 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }" else (compound_statement "{\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }" { (if_statement "if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);" do (compound_statement "{\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                }" { (expression_statement "iVar11 = FUN_0004c840(iVar27);" (assignment_expression "iVar11 = FUN_0004c840(iVar27)" identifier = (call_expression "FUN_0004c840(iVar27)" identifier (argument_list "(iVar27)" ( identifier )))) ;) (expression_statement "piVar20[iVar27 + 5] = iVar11;" (assignment_expression "piVar20[iVar27 + 5] = iVar11" (subscript_expression "piVar20[iVar27 + 5]" identifier [ (binary_expression "iVar27 + 5" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }" { (expression_statement "piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);" (assignment_expression "piVar20[iVar27 + 5] = *(int *)(iVar15 + 8)" (subscript_expression "piVar20[iVar27 + 5]" identifier [ (binary_expression "iVar27 + 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 "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != iVar27)" ( (binary_expression "iVar18 != iVar27" identifier != identifier) )) ;) })) (do_statement "do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" { (expression_statement "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\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                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }" { (expression_statement "iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;" (assignment_expression "iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" identifier = (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))) ;) })) (expression_statement "*(int *)(iVar27 + 8) = iVar18;" (assignment_expression "*(int *)(iVar27 + 8) = iVar18" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" 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_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "pbVar4 = param_2 + iVar15 * 4 + 0x14;" (assignment_expression "pbVar4 = 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 "pbVar4[0] = 0xff;" (assignment_expression "pbVar4[0] = 0xff" (subscript_expression "pbVar4[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4[1] = 0xff;" (assignment_expression "pbVar4[1] = 0xff" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4[2] = 0xff;" (assignment_expression "pbVar4[2] = 0xff" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4[3] = 0xff;" (assignment_expression "pbVar4[3] = 0xff" (subscript_expression "pbVar4[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 "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "*piVar20 = iVar18 + -1;" (assignment_expression "*piVar20 = iVar18 + -1" (pointer_expression "*piVar20" * identifier) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }" if (parenthesized_expression "(iVar18 + -1 == 0)" ( (binary_expression "iVar18 + -1 == 0" (binary_expression "iVar18 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                FUN_0002a720();\n              }" { (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" identifier (argument_list "()" ( ))) ;) })) }))) }))) (labeled_statement "LAB_0008273c:\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_c4 != 0) {\n            FUN_00043210();\n          }" if (parenthesized_expression "(local_c4 != 0)" ( (binary_expression "local_c4 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00043210();\n          }" { (expression_statement "FUN_00043210();" (call_expression "FUN_00043210()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00081db1;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }" else (compound_statement "{\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }" { (expression_statement "iVar27 = *(int *)(param_2 + 0x3c);" (assignment_expression "iVar27 = *(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_00082701;\n          goto LAB_00081e83;\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_00082701;\n          goto LAB_00081e83;\n        }" { (if_statement "if ((uVar12 & 0x2000) != 0) goto LAB_00082701;" 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_00082701;" goto statement_identifier ;)) (goto_statement "goto LAB_00081e83;" goto statement_identifier ;) })) (expression_statement "pbVar4 = *(byte **)(param_2 + 0x34);" (assignment_expression "pbVar4 = *(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 "pbVar26 = param_2;" (assignment_expression "pbVar26 = param_2" identifier = identifier) ;) (if_statement "if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" if (parenthesized_expression "(pbVar4 == (byte *)0x0)" ( (binary_expression "pbVar4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }" { (labeled_statement "LAB_000830eb:\n          local_d0 = (byte *)0x1;" statement_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)) ;)) (expression_statement "iVar18 = unaff_EBP + 0x29350;" (assignment_expression "iVar18 = unaff_EBP + 0x29350" identifier = (binary_expression "unaff_EBP + 0x29350" identifier + number_literal)) ;) }) (else_clause "else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" else (compound_statement "{\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" { (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)) ;) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" identifier = identifier) ;) (do_statement "do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);" do (compound_statement "{\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          }" { (expression_statement "pbVar26 = pbVar6;" (assignment_expression "pbVar26 = pbVar6" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));" (assignment_expression "local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0))" identifier = (cast_expression "(byte *)((int)local_d0 + (uint)(iVar27 == 0))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + (uint)(iVar27 == 0))" ( (binary_expression "(int)local_d0 + (uint)(iVar27 == 0)" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(iVar27 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )))) )))) ;) (if_statement "if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }" if (parenthesized_expression "(*(int *)(pbVar26 + 0x44) != 0)" ( (binary_expression "*(int *)(pbVar26 + 0x44) != 0" (pointer_expression "*(int *)(pbVar26 + 0x44)" * (cast_expression "(int *)(pbVar26 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 0x44)" ( (binary_expression "pbVar26 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }" { (if_statement "if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;" 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_00081e83;" 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 = pbVar4;" (assignment_expression "local_d0 = pbVar4" identifier = identifier) ;) (goto_statement "goto LAB_000827ee;" goto statement_identifier ;) })) (expression_statement "pbVar6 = *(byte **)(pbVar26 + 0x34);" (assignment_expression "pbVar6 = *(byte **)(pbVar26 + 0x34)" identifier = (pointer_expression "*(byte **)(pbVar26 + 0x34)" * (cast_expression "(byte **)(pbVar26 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x34)" ( (binary_expression "pbVar26 + 0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(byte **)(pbVar26 + 0x34) != (byte *)0x0)" ( (binary_expression "*(byte **)(pbVar26 + 0x34) != (byte *)0x0" (pointer_expression "*(byte **)(pbVar26 + 0x34)" * (cast_expression "(byte **)(pbVar26 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x34)" ( (binary_expression "pbVar26 + 0x34" identifier + number_literal) )))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar18 = unaff_EBP + 0x29531;" (assignment_expression "iVar18 = unaff_EBP + 0x29531" identifier = (binary_expression "unaff_EBP + 0x29531" identifier + number_literal)) ;) (if_statement "if (local_d0 == (byte *)0x1) goto LAB_000830eb;" if (parenthesized_expression "(local_d0 == (byte *)0x1)" ( (binary_expression "local_d0 == (byte *)0x1" identifier == (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000830eb;" goto statement_identifier ;)) }))) (expression_statement "FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);" (call_expression "FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18)" identifier (argument_list "(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28f9d" identifier + number_literal) , identifier , identifier ))) ;) (do_statement "do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);" do (compound_statement "{\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        }" { (expression_statement "FUN_00079470(0,0,&local_74,1,1);" (call_expression "FUN_00079470(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 ))) ;) (if_statement "if (iVar27 != 0) break;" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(short *)(pbVar26 + 2) = (short)local_d0;" (assignment_expression "*(short *)(pbVar26 + 2) = (short)local_d0" (pointer_expression "*(short *)(pbVar26 + 2)" * (cast_expression "(short *)(pbVar26 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) )))) = (cast_expression "(short)local_d0" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "pbVar26 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar26 = *(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 "(pbVar26 != (byte *)0x0)" ( (binary_expression "pbVar26 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) 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_00081db1;" goto statement_identifier ;) })) (expression_statement "cVar3 = *pcVar24;" (assignment_expression "cVar3 = *pcVar24" identifier = (pointer_expression "*pcVar24" * identifier)) ;) (if_statement "if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" if (parenthesized_expression "(cVar3 == -0x7a)" ( (binary_expression "cVar3 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289ee;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289ee;" (assignment_expression "iVar18 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) }) (else_clause "else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" else (if_statement "if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" if (parenthesized_expression "(cVar3 == -0x79)" ( (binary_expression "cVar3 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289e4;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289e4;" (assignment_expression "iVar18 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" else (compound_statement "{\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289f5;" (assignment_expression "iVar18 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) (if_statement "if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }" if (parenthesized_expression "(cVar3 == -0x7b)" ( (binary_expression "cVar3 == -0x7b" identifier == number_literal) )) (compound_statement "{\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }" { (expression_statement "iVar18 = unaff_EBP + 0x289da;" (assignment_expression "iVar18 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (expression_statement "iVar15 = unaff_EBP + 0x28f97;" (assignment_expression "iVar15 = unaff_EBP + 0x28f97" identifier = (binary_expression "unaff_EBP + 0x28f97" identifier + number_literal)) ;) (goto_statement "goto LAB_00081d80;" goto statement_identifier ;) })) }))))) (expression_statement "iVar15 = unaff_EBP + 0x28f97;" (assignment_expression "iVar15 = unaff_EBP + 0x28f97" identifier = (binary_expression "unaff_EBP + 0x28f97" identifier + number_literal)) ;) }) (else_clause "else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" else (compound_statement "{\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" { (expression_statement "cVar3 = *pcVar24;" (assignment_expression "cVar3 = *pcVar24" identifier = (pointer_expression "*pcVar24" * identifier)) ;) (if_statement "if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" if (parenthesized_expression "(cVar3 == -0x7a)" ( (binary_expression "cVar3 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289ee;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289ee;" (assignment_expression "iVar18 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) }) (else_clause "else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" else (if_statement "if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" if (parenthesized_expression "(cVar3 == -0x79)" ( (binary_expression "cVar3 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289e4;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289e4;" (assignment_expression "iVar18 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) ;) }) (else_clause "else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" else (compound_statement "{\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" { (if_statement "if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }" if (parenthesized_expression "(cVar3 != -0x7b)" ( (binary_expression "cVar3 != -0x7b" identifier != number_literal) )) (compound_statement "{\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }" { (expression_statement "iVar18 = unaff_EBP + 0x289f5;" (assignment_expression "iVar18 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) (expression_statement "iVar15 = unaff_EBP + 0x28e22;" (assignment_expression "iVar15 = unaff_EBP + 0x28e22" identifier = (binary_expression "unaff_EBP + 0x28e22" identifier + number_literal)) ;) (goto_statement "goto LAB_00081d80;" goto statement_identifier ;) })) (expression_statement "iVar18 = unaff_EBP + 0x289da;" (assignment_expression "iVar18 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) }))))) (expression_statement "iVar15 = unaff_EBP + 0x28e22;" (assignment_expression "iVar15 = unaff_EBP + 0x28e22" identifier = (binary_expression "unaff_EBP + 0x28e22" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);" statement_identifier : (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18)" identifier (argument_list "(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18)" ( identifier , (binary_expression "unaff_EBP + 0x2b8bb" identifier + number_literal) , 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_00081db1:\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_000a9ea0();" (call_expression "FUN_000a9ea0()" 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  u8 uVar2;\n  sqlite3 *psVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  Select *pSVar6;\n  short sVar7;\n  byte bVar8;\n  LogEst LVar9;\n  short sVar10;\n  char *pcVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  Expr *pEVar15;\n  int *zP4;\n  ExprList *pEVar16;\n  CollSeq *pCVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  u32 uVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  Op *pOVar25;\n  KeyInfo *pKVar26;\n  char *pcVar27;\n  Vdbe *pVVar28;\n  uint uVar29;\n  short sVar30;\n  DistinctCtx *pDVar31;\n  int extraout_ECX;\n  Parse *extraout_ECX_00;\n  int extraout_ECX_01;\n  ExprList_item *pEVar32;\n  uint uVar33;\n  Select *pSVar34;\n  SrcList *pSVar35;\n  Select *pSVar36;\n  Select *pSVar37;\n  SelectDest *pSVar38;\n  SortCtx *pSVar39;\n  int in_GS_OFFSET;\n  bool bVar40;\n  SelectDest *in_stack_ffffff18;\n  SelectDest *pDest_00;\n  char *in_stack_ffffff1c;\n  char *in_stack_ffffff20;\n  Parse *pPVar41;\n  Parse *iBreak;\n  Select *in_stack_ffffff24;\n  undefined4 in_stack_ffffff28;\n  Select *local_d0;\n  Vdbe *local_c8;\n  Vdbe *local_c4;\n  uint local_c0;\n  uint local_bc;\n  ExprList *local_b4;\n  int local_b0;\n  SelectDest *local_ac;\n  KeyInfo *local_a4;\n  int local_a0;\n  int local_9c;\n  KeyInfo *local_98;\n  int local_94;\n  int local_90;\n  int local_80;\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 = 0x81ced;\n  pSVar37 = 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 (pSVar37->pOrderBy == (ExprList *)0x0) {\n    if (pSVar37->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\n    }\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }\n    pcVar11 = "LIMIT";\n  }\n  else {\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }\n    pcVar11 = "ORDER BY";\n  }\nLAB_00081d80:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);\n  pDest->iSdst = dest.iSdst;\n  pDest->nSdst = dest.nSdst;\n  local_d0 = (Select *)0x1;\nLAB_00081db1:\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  u8 uVar2;\n  sqlite3 *psVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  Select *pSVar6;\n  short sVar7;\n  byte bVar8;\n  LogEst LVar9;\n  short sVar10;\n  char *pcVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  Expr *pEVar15;\n  int *zP4;\n  ExprList *pEVar16;\n  CollSeq *pCVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  u32 uVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  Op *pOVar25;\n  KeyInfo *pKVar26;\n  char *pcVar27;\n  Vdbe *pVVar28;\n  uint uVar29;\n  short sVar30;\n  DistinctCtx *pDVar31;\n  int extraout_ECX;\n  Parse *extraout_ECX_00;\n  int extraout_ECX_01;\n  ExprList_item *pEVar32;\n  uint uVar33;\n  Select *pSVar34;\n  SrcList *pSVar35;\n  Select *pSVar36;\n  Select *pSVar37;\n  SelectDest *pSVar38;\n  SortCtx *pSVar39;\n  int in_GS_OFFSET;\n  bool bVar40;\n  SelectDest *in_stack_ffffff18;\n  SelectDest *pDest_00;\n  char *in_stack_ffffff1c;\n  char *in_stack_ffffff20;\n  Parse *pPVar41;\n  Parse *iBreak;\n  Select *in_stack_ffffff24;\n  undefined4 in_stack_ffffff28;\n  Select *local_d0;\n  Vdbe *local_c8;\n  Vdbe *local_c4;\n  uint local_c0;\n  uint local_bc;\n  ExprList *local_b4;\n  int local_b0;\n  SelectDest *local_ac;\n  KeyInfo *local_a4;\n  int local_a0;\n  int local_9c;\n  KeyInfo *local_98;\n  int local_94;\n  int local_90;\n  int local_80;\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 = 0x81ced;\n  pSVar37 = 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 (pSVar37->pOrderBy == (ExprList *)0x0) {\n    if (pSVar37->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\n    }\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }\n    pcVar11 = "LIMIT";\n  }\n  else {\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }\n    pcVar11 = "ORDER BY";\n  }\nLAB_00081d80:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);\n  pDest->iSdst = dest.iSdst;\n  pDest->nSdst = dest.nSdst;\n  local_d0 = (Select *)0x1;\nLAB_00081db1:\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  u8 uVar2;\n  sqlite3 *psVar3;\n  undefined1 *puVar4;\n  uint uVar5;\n  Select *pSVar6;\n  short sVar7;\n  byte bVar8;\n  LogEst LVar9;\n  short sVar10;\n  char *pcVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  Expr *pEVar15;\n  int *zP4;\n  ExprList *pEVar16;\n  CollSeq *pCVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  u32 uVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  Op *pOVar25;\n  KeyInfo *pKVar26;\n  char *pcVar27;\n  Vdbe *pVVar28;\n  uint uVar29;\n  short sVar30;\n  DistinctCtx *pDVar31;\n  int extraout_ECX;\n  Parse *extraout_ECX_00;\n  int extraout_ECX_01;\n  ExprList_item *pEVar32;\n  uint uVar33;\n  Select *pSVar34;\n  SrcList *pSVar35;\n  Select *pSVar36;\n  Select *pSVar37;\n  SelectDest *pSVar38;\n  SortCtx *pSVar39;\n  int in_GS_OFFSET;\n  bool bVar40;\n  SelectDest *in_stack_ffffff18;\n  SelectDest *pDest_00;\n  char *in_stack_ffffff1c;\n  char *in_stack_ffffff20;\n  Parse *pPVar41;\n  Parse *iBreak;\n  Select *in_stack_ffffff24;\n  undefined4 in_stack_ffffff28;\n  Select *local_d0;\n  Vdbe *local_c8;\n  Vdbe *local_c4;\n  uint local_c0;\n  uint local_bc;\n  ExprList *local_b4;\n  int local_b0;\n  SelectDest *local_ac;\n  KeyInfo *local_a4;\n  int local_a0;\n  int local_9c;\n  KeyInfo *local_98;\n  int local_94;\n  int local_90;\n  int local_80;\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 = 0x81ced;\n  pSVar37 = 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 (pSVar37->pOrderBy == (ExprList *)0x0) {\n    if (pSVar37->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\n    }\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }\n    pcVar11 = "LIMIT";\n  }\n  else {\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }\n    pcVar11 = "ORDER BY";\n  }\nLAB_00081d80:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);\n  pDest->iSdst = dest.iSdst;\n  pDest->nSdst = dest.nSdst;\n  local_d0 = (Select *)0x1;\nLAB_00081db1:\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 "u8 uVar2;" type_identifier identifier ;) (declaration "sqlite3 *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "Select *pSVar6;" type_identifier (pointer_declarator "*pSVar6" * identifier) ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "LogEst LVar9;" type_identifier identifier ;) (declaration "short sVar10;" (sized_type_specifier "short" short) identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "Expr *pEVar15;" type_identifier (pointer_declarator "*pEVar15" * identifier) ;) (declaration "int *zP4;" primitive_type (pointer_declarator "*zP4" * identifier) ;) (declaration "ExprList *pEVar16;" type_identifier (pointer_declarator "*pEVar16" * identifier) ;) (declaration "CollSeq *pCVar17;" type_identifier (pointer_declarator "*pCVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "u32 uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "Op *pOVar25;" type_identifier (pointer_declarator "*pOVar25" * identifier) ;) (declaration "KeyInfo *pKVar26;" type_identifier (pointer_declarator "*pKVar26" * identifier) ;) (declaration "char *pcVar27;" primitive_type (pointer_declarator "*pcVar27" * identifier) ;) (declaration "Vdbe *pVVar28;" type_identifier (pointer_declarator "*pVVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "short sVar30;" (sized_type_specifier "short" short) identifier ;) (declaration "DistinctCtx *pDVar31;" type_identifier (pointer_declarator "*pDVar31" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "Parse *extraout_ECX_00;" type_identifier (pointer_declarator "*extraout_ECX_00" * identifier) ;) (declaration "int extraout_ECX_01;" primitive_type identifier ;) (declaration "ExprList_item *pEVar32;" type_identifier (pointer_declarator "*pEVar32" * identifier) ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "Select *pSVar34;" type_identifier (pointer_declarator "*pSVar34" * identifier) ;) (declaration "SrcList *pSVar35;" type_identifier (pointer_declarator "*pSVar35" * identifier) ;) (declaration "Select *pSVar36;" type_identifier (pointer_declarator "*pSVar36" * identifier) ;) (declaration "Select *pSVar37;" type_identifier (pointer_declarator "*pSVar37" * identifier) ;) (declaration "SelectDest *pSVar38;" type_identifier (pointer_declarator "*pSVar38" * identifier) ;) (declaration "SortCtx *pSVar39;" type_identifier (pointer_declarator "*pSVar39" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar40;" primitive_type identifier ;) (declaration "SelectDest *in_stack_ffffff18;" type_identifier (pointer_declarator "*in_stack_ffffff18" * identifier) ;) (declaration "SelectDest *pDest_00;" type_identifier (pointer_declarator "*pDest_00" * 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 *pPVar41;" type_identifier (pointer_declarator "*pPVar41" * identifier) ;) (declaration "Parse *iBreak;" type_identifier (pointer_declarator "*iBreak" * 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 "Vdbe *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "Vdbe *local_c4;" type_identifier (pointer_declarator "*local_c4" * identifier) ;) (declaration "uint local_c0;" type_identifier identifier ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "ExprList *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "SelectDest *local_ac;" type_identifier (pointer_declarator "*local_ac" * identifier) ;) (declaration "KeyInfo *local_a4;" type_identifier (pointer_declarator "*local_a4" * 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_80;" 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 = 0x81ced;" (assignment_expression "x.n = 0x81ced" (field_expression "x.n" identifier . field_identifier) = number_literal) ;) (expression_statement "pSVar37 = p->pPrior;" (assignment_expression "pSVar37 = 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 (pSVar37->pOrderBy == (ExprList *)0x0) {\n    if (pSVar37->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\n    }\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }\n    pcVar11 = "LIMIT";\n  }\n  else {\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }\n    pcVar11 = "ORDER BY";\n  }" if (parenthesized_expression "(pSVar37->pOrderBy == (ExprList *)0x0)" ( (binary_expression "pSVar37->pOrderBy == (ExprList *)0x0" (field_expression "pSVar37->pOrderBy" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pSVar37->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\n    }\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }\n    pcVar11 = "LIMIT";\n  }" { (if_statement "if (pSVar37->pLimit == (Expr *)0x0) {\n      local_c8 = pParse->pVdbe;\n      if (local_c8 == (Vdbe *)0x0) {\n        in_stack_ffffff20 = (char *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\n    }" if (parenthesized_expression "(pSVar37->pLimit == (Expr *)0x0)" ( (binary_expression "pSVar37->pLimit == (Expr *)0x0" (field_expression "pSVar37->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 *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }\n      if (dest.eDest == '\f') {\n        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }\n      uVar13 = p->selFlags;\n      if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }\n      local_d0 = (Select *)0x0;\n      pDest->iSdst = dest.iSdst;\n      pDest->nSdst = dest.nSdst;\n      goto LAB_00081db1;\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 *)0x82be9;\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 *)0x82be9;\n        local_c8 = sqlite3GetVdbe(pParse);\n      }" { (expression_statement "in_stack_ffffff20 = (char *)0x82be9;" (assignment_expression "in_stack_ffffff20 = (char *)0x82be9" identifier = (cast_expression "(char *)0x82be9" ( (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        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\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        in_stack_ffffff18 = (SelectDest *)0x0;\n        sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);\n        dest.eDest = '\x0e';\n      }" { (expression_statement "in_stack_ffffff18 = (SelectDest *)0x0;" (assignment_expression "in_stack_ffffff18 = (SelectDest *)0x0" identifier = (cast_expression "(SelectDest *)0x0" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,100,dest.iSDParm,p->pEList->nExpr,0)" identifier (argument_list "(local_c8,100,dest.iSDParm,p->pEList->nExpr,0)" ( identifier , number_literal , (field_expression "dest.iSDParm" identifier . field_identifier) , (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier) , number_literal ))) ;) (expression_statement "dest.eDest = '\x0e';" (assignment_expression "dest.eDest = '\x0e'" (field_expression "dest.eDest" identifier . field_identifier) = (char_literal "'\x0e'" ' escape_sequence ')) ;) })) (expression_statement "uVar13 = p->selFlags;" (assignment_expression "uVar13 = p->selFlags" identifier = (field_expression "p->selFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar13 & 0x400) == 0) {\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }" if (parenthesized_expression "((uVar13 & 0x400) == 0)" ( (binary_expression "(uVar13 & 0x400) == 0" (parenthesized_expression "(uVar13 & 0x400)" ( (binary_expression "uVar13 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }\n        pSVar35 = p->pSrc;\n        local_c0 = p->pEList->nExpr;\n        local_c4 = pParse->pVdbe;\n        local_d0 = p->pPrior;\n        if (p->pWin == (Window *)0x0) {\nLAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }\n        if (pParse->nErr == 0) {\n          local_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }\n      }" { (if_statement "if ((uVar13 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }" if (parenthesized_expression "((uVar13 & 0x2000) == 0)" ( (binary_expression "(uVar13 & 0x2000) == 0" (parenthesized_expression "(uVar13 & 0x2000)" ( (binary_expression "uVar13 & 0x2000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00081e83:\n          local_b4 = p->pOrderBy;\n          if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }\n          if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }\n          uVar2 = p->op;\n          if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          goto LAB_00081db1;\n        }" { (labeled_statement "LAB_00081e83:\n          local_b4 = p->pOrderBy;" statement_identifier : (expression_statement "local_b4 = p->pOrderBy;" (assignment_expression "local_b4 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) ;)) (if_statement "if (local_b4 != (ExprList *)0x0) {\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }" if (parenthesized_expression "(local_b4 != (ExprList *)0x0)" ( (binary_expression "local_b4 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            psVar3 = pParse->db;\n            pVVar28 = pParse->pVdbe;\n            iVar22 = pParse->nLabel + -1;\n            iVar12 = pParse->nLabel + -2;\n            pParse->nLabel = iVar12;\n            pSVar37 = p->pPrior;\n            uVar13 = (uint)p->op;\n            local_b0 = local_b4->nExpr;\n            if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }\n            local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }\n            p->pOrderBy = local_b4;\n            pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);\n            pSVar37->pOrderBy = pEVar16;\n            if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }\n            p->pPrior = (Select *)0x0;\n            pEVar16 = p->pOrderBy;\n            pSVar37->pNext = (Select *)0x0;\n            sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");\n            if (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }\n            computeLimitRegisters(pParse,p,iVar22);\n            iVar14 = p->iLimit;\n            if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 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            iVar18 = 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            uVar33 = iVar18 + 2;\n            iVar14 = iVar18 + 1;\n            local_2c._0_4_ = 0;\n            iVar23 = iVar18 + 3;\n            iVar18 = iVar18 + 4;\n            pParse->nMem = iVar18;\n            uVar2 = p->op;\n            pSVar38 = (SelectDest *)"EXCEPT";\n            if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }\n            destA.iSDParm = iVar14;\n            local_38 = uVar33;\n            sqlite3VdbeExplain(pParse,'\x01',"MERGE (%s)");\n            iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);\n            pSVar37->iLimit = local_9c;\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT");\n            sqlite3Select(pParse,pSVar37,&destA);\n            sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);\n            iVar19 = p->iLimit;\n            iVar24 = p->iOffset;\n            p->iOffset = 0;\n            p->iLimit = local_94;\n            sqlite3VdbeExplain(pParse,'\x01',"RIGHT");\n            sqlite3Select(pParse,p,local_ac);\n            p->iOffset = iVar24;\n            p->iLimit = iVar19;\n            sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);\n            pPVar41 = pVVar28->pParse;\n            pPVar41->nTempReg = '\0';\n            pPVar41->nRangeReg = 0;\n            iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            local_80 = 0;\n            if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }\n            if ((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }\n            iVar24 = iVar22;\n            local_90 = iVar22;\n            if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }\n            if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }\n            iVar23 = pVVar28->nOp;\n            if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n            iVar18 = pVVar28->nOp + -1;\n            if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }\n            pOVar25 = (Op *)&dummy_22674;\n            if (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }\n            pOVar25->p2 = pVVar28->nOp;\n            sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);\n            sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);\n            sqlite3VdbeResolveLabel(pVVar28,iVar12);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);\n            iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);\n            sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);\n            if (0 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }\n            sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);\n            sqlite3VdbeResolveLabel(pVVar28,iVar22);\n            if (p->pPrior != (Select *)0x0) {\n              clearSelect(psVar3,p->pPrior,1);\n            }\n            p->pPrior = pSVar37;\n            pSVar37->pNext = p;\n            iVar22 = pParse->addrExplain;\n            if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }\n            pParse->addrExplain = iVar22;\n            local_d0 = (Select *)(uint)(pParse->nErr != 0);\n            goto LAB_00081db1;\n          }" { (expression_statement "psVar3 = pParse->db;" (assignment_expression "psVar3 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pVVar28 = pParse->pVdbe;" (assignment_expression "pVVar28 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "iVar22 = pParse->nLabel + -1;" (assignment_expression "iVar22 = pParse->nLabel + -1" identifier = (binary_expression "pParse->nLabel + -1" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "iVar12 = pParse->nLabel + -2;" (assignment_expression "iVar12 = pParse->nLabel + -2" identifier = (binary_expression "pParse->nLabel + -2" (field_expression "pParse->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nLabel = iVar12;" (assignment_expression "pParse->nLabel = iVar12" (field_expression "pParse->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar37 = p->pPrior;" (assignment_expression "pSVar37 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "uVar13 = (uint)p->op;" (assignment_expression "uVar13 = (uint)p->op" identifier = (cast_expression "(uint)p->op" ( (type_descriptor "uint" type_identifier) ) (field_expression "p->op" identifier -> field_identifier))) ;) (expression_statement "local_b0 = local_b4->nExpr;" (assignment_expression "local_b0 = local_b4->nExpr" identifier = (field_expression "local_b4->nExpr" identifier -> field_identifier)) ;) (if_statement "if (((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)) {\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }" if (parenthesized_expression "(((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr))" ( (binary_expression "((uVar13 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < p->pEList->nExpr)" (parenthesized_expression "((uVar13 != 0x85) && (psVar3->mallocFailed == '\0'))" ( (binary_expression "(uVar13 != 0x85) && (psVar3->mallocFailed == '\0')" (parenthesized_expression "(uVar13 != 0x85)" ( (binary_expression "uVar13 != 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 "(0 < p->pEList->nExpr)" ( (binary_expression "0 < p->pEList->nExpr" number_literal < (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier)) ))) )) (compound_statement "{\n              uVar33 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));\n            }" { (expression_statement "uVar33 = 1;" (assignment_expression "uVar33 = 1" identifier = number_literal) ;) (do_statement "do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              } while ((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr));" do (compound_statement "{\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }\n                uVar33 = uVar33 + 1;\n              }" { (if_statement "if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }" if (parenthesized_expression "(local_b0 < 1)" ( (binary_expression "local_b0 < 1" identifier < number_literal) )) (compound_statement "{\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }" { (if_statement "if (local_b0 == 0) {\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00081f4a:\n                    nLimit = 0;\n                    local_38 = 0;\n                    pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);\n                    if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    pEVar15->flags = pEVar15->flags | 0x400;\n                    (pEVar15->u).iValue = uVar33;\n                    local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);\n                    p->pOrderBy = local_b4;\n                    if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" { (labeled_statement "LAB_00081f4a:\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 "pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0);" (assignment_expression "pEVar15 = sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0)" identifier = (call_expression "sqlite3ExprAlloc(psVar3,0x98,(Token *)&nLimit,0)" identifier (argument_list "(psVar3,0x98,(Token *)&nLimit,0)" ( identifier , number_literal , (cast_expression "(Token *)&nLimit" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier)) , number_literal )))) ;) (if_statement "if (pEVar15 == (Expr *)0x0) {\n                      local_d0 = (Select *)0x7;\n                      goto LAB_00081db1;\n                    }" if (parenthesized_expression "(pEVar15 == (Expr *)0x0)" ( (binary_expression "pEVar15 == (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_00081db1;\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_00081db1;" goto statement_identifier ;) })) (expression_statement "pEVar15->flags = pEVar15->flags | 0x400;" (assignment_expression "pEVar15->flags = pEVar15->flags | 0x400" (field_expression "pEVar15->flags" identifier -> field_identifier) = (binary_expression "pEVar15->flags | 0x400" (field_expression "pEVar15->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "(pEVar15->u).iValue = uVar33;" (assignment_expression "(pEVar15->u).iValue = uVar33" (field_expression "(pEVar15->u).iValue" (parenthesized_expression "(pEVar15->u)" ( (field_expression "pEVar15->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15);" (assignment_expression "local_b4 = sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15)" identifier = (call_expression "sqlite3ExprListAppend((Parse *)pParse->db,local_b4,pEVar15)" identifier (argument_list "((Parse *)pParse->db,local_b4,pEVar15)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , identifier , identifier )))) ;) (expression_statement "p->pOrderBy = local_b4;" (assignment_expression "p->pOrderBy = local_b4" (field_expression "p->pOrderBy" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_b4 != (ExprList *)0x0) {\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }" if (parenthesized_expression "(local_b4 != (ExprList *)0x0)" ( (binary_expression "local_b4 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;\n                      local_b0 = local_b0 + 1;\n                    }" { (expression_statement "local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33;" (assignment_expression "local_b4->a[local_b0].u.x.iOrderByCol = (u16)uVar33" (field_expression "local_b4->a[local_b0].u.x.iOrderByCol" (field_expression "local_b4->a[local_b0].u.x" (field_expression "local_b4->a[local_b0].u" (subscript_expression "local_b4->a[local_b0]" (field_expression "local_b4->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(u16)uVar33" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) })) })) }) (else_clause "else if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }" else (if_statement "if (uVar33 != local_b4->a[0].u.x.iOrderByCol) {\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }" if (parenthesized_expression "(uVar33 != local_b4->a[0].u.x.iOrderByCol)" ( (binary_expression "uVar33 != local_b4->a[0].u.x.iOrderByCol" identifier != (field_expression "local_b4->a[0].u.x.iOrderByCol" (field_expression "local_b4->a[0].u.x" (field_expression "local_b4->a[0].u" (subscript_expression "local_b4->a[0]" (field_expression "local_b4->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) . field_identifier)) )) (compound_statement "{\n                  iVar14 = 0;\n                  pEVar32 = local_b4->a;\n                  do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);\n                }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pEVar32 = local_b4->a;" (assignment_expression "pEVar32 = local_b4->a" identifier = (field_expression "local_b4->a" identifier -> field_identifier)) ;) (do_statement "do {\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  } while (*(ushort *)(iVar23 + 0xc) != uVar33);" do (compound_statement "{\n                    iVar14 = iVar14 + 1;\n                    if (iVar14 == local_b0) goto LAB_00081f4a;\n                    iVar23 = (int)(pEVar32 + 1);\n                    pEVar32 = pEVar32 + 1;\n                  }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (if_statement "if (iVar14 == local_b0) goto LAB_00081f4a;" if (parenthesized_expression "(iVar14 == local_b0)" ( (binary_expression "iVar14 == local_b0" identifier == identifier) )) (goto_statement "goto LAB_00081f4a;" goto statement_identifier ;)) (expression_statement "iVar23 = (int)(pEVar32 + 1);" (assignment_expression "iVar23 = (int)(pEVar32 + 1)" identifier = (cast_expression "(int)(pEVar32 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pEVar32 + 1)" ( (binary_expression "pEVar32 + 1" identifier + number_literal) )))) ;) (expression_statement "pEVar32 = pEVar32 + 1;" (assignment_expression "pEVar32 = pEVar32 + 1" identifier = (binary_expression "pEVar32 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(ushort *)(iVar23 + 0xc) != uVar33)" ( (binary_expression "*(ushort *)(iVar23 + 0xc) != uVar33" (pointer_expression "*(ushort *)(iVar23 + 0xc)" * (cast_expression "(ushort *)(iVar23 + 0xc)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0xc)" ( (binary_expression "iVar23 + 0xc" identifier + number_literal) )))) != identifier) )) ;) })))) (expression_statement "uVar33 = uVar33 + 1;" (assignment_expression "uVar33 = uVar33 + 1" identifier = (binary_expression "uVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr))" ( (binary_expression "(psVar3->mallocFailed == '\0') && ((int)uVar33 <= p->pEList->nExpr)" (parenthesized_expression "(psVar3->mallocFailed == '\0')" ( (binary_expression "psVar3->mallocFailed == '\0'" (field_expression "psVar3->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((int)uVar33 <= p->pEList->nExpr)" ( (binary_expression "(int)uVar33 <= p->pEList->nExpr" (cast_expression "(int)uVar33" ( (type_descriptor "int" primitive_type) ) identifier) <= (field_expression "p->pEList->nExpr" (field_expression "p->pEList" identifier -> field_identifier) -> field_identifier)) ))) )) ;) })) (expression_statement "local_ac = (SelectDest *)&nLimit;" (assignment_expression "local_ac = (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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\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 = local_b0;\n              if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }\n              local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);\n            }" { (expression_statement "*zP4 = local_b0;" (assignment_expression "*zP4 = local_b0" (pointer_expression "*zP4" * identifier) = identifier) ;) (if_statement "if (0 < local_b0) {\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }" if (parenthesized_expression "(0 < local_b0)" ( (binary_expression "0 < local_b0" number_literal < identifier) )) (compound_statement "{\n                iVar14 = 0;\n                do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);\n              }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                } while (local_b0 * 4 != iVar14);" do (compound_statement "{\n                  *(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;\n                  iVar14 = iVar14 + 4;\n                }" { (expression_statement "*(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1;" (assignment_expression "*(uint *)((int)zP4 + iVar14 + 4) = (&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1" (pointer_expression "*(uint *)((int)zP4 + iVar14 + 4)" * (cast_expression "(uint *)((int)zP4 + iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)zP4 + iVar14 + 4)" ( (binary_expression "(int)zP4 + iVar14 + 4" (binary_expression "(int)zP4 + iVar14" (cast_expression "(int)zP4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (binary_expression "(&local_b4->a[0].u)[iVar14].x.iOrderByCol - 1" (field_expression "(&local_b4->a[0].u)[iVar14].x.iOrderByCol" (field_expression "(&local_b4->a[0].u)[iVar14].x" (subscript_expression "(&local_b4->a[0].u)[iVar14]" (parenthesized_expression "(&local_b4->a[0].u)" ( (pointer_expression "&local_b4->a[0].u" & (field_expression "local_b4->a[0].u" (subscript_expression "local_b4->a[0]" (field_expression "local_b4->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) )) [ identifier ]) . field_identifier) . field_identifier) - number_literal)) ;) (expression_statement "iVar14 = iVar14 + 4;" (assignment_expression "iVar14 = iVar14 + 4" identifier = (binary_expression "iVar14 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_b0 * 4 != iVar14)" ( (binary_expression "local_b0 * 4 != iVar14" (binary_expression "local_b0 * 4" identifier * number_literal) != identifier) )) ;) })) (expression_statement "local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a);" (assignment_expression "local_98 = multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a)" identifier = (call_expression "multiSelectOrderByKeyInfo(pParse,p,(int)local_b4->a)" identifier (argument_list "(pParse,p,(int)local_b4->a)" ( identifier , identifier , (cast_expression "(int)local_b4->a" ( (type_descriptor "int" primitive_type) ) (field_expression "local_b4->a" identifier -> field_identifier)) )))) ;) })) (expression_statement "p->pOrderBy = local_b4;" (assignment_expression "p->pOrderBy = local_b4" (field_expression "p->pOrderBy" identifier -> field_identifier) = identifier) ;) (expression_statement "pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0);" (assignment_expression "pEVar16 = sqlite3ExprListDup(pParse->db,local_b4,0)" identifier = (call_expression "sqlite3ExprListDup(pParse->db,local_b4,0)" identifier (argument_list "(pParse->db,local_b4,0)" ( (field_expression "pParse->db" identifier -> field_identifier) , identifier , number_literal )))) ;) (expression_statement "pSVar37->pOrderBy = pEVar16;" (assignment_expression "pSVar37->pOrderBy = pEVar16" (field_expression "pSVar37->pOrderBy" identifier -> field_identifier) = identifier) ;) (if_statement "if (uVar13 == 0x85) {\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }\n            else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }" if (parenthesized_expression "(uVar13 == 0x85)" ( (binary_expression "uVar13 == 0x85" identifier == number_literal) )) (compound_statement "{\n              local_a4 = (KeyInfo *)0x0;\n              local_90 = 0;\n            }" { (expression_statement "local_a4 = (KeyInfo *)0x0;" (assignment_expression "local_a4 = (KeyInfo *)0x0" identifier = (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }\n            }" else (compound_statement "{\n              puVar4 = (undefined1 *)p->pEList->nExpr;\n              local_90 = pParse->nMem + 1;\n              pParse->nMem = (int)(puVar4 + pParse->nMem + 1);\n              sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0);\n              local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n              if ((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\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_90 = pParse->nMem + 1;" (assignment_expression "local_90 = 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(pVVar28,0x45,0,local_90,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0x45,0,local_90,0)" identifier (argument_list "(pVVar28,0x45,0,local_90,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "local_a4 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);" (assignment_expression "local_a4 = 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_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)) {\n                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }" if (parenthesized_expression "((local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4))" ( (binary_expression "(local_a4 != (KeyInfo *)0x0) && (0 < (int)puVar4)" (parenthesized_expression "(local_a4 != (KeyInfo *)0x0)" ( (binary_expression "local_a4 != (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                pSVar34 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);\n              }" { (expression_statement "pSVar34 = (Select *)0x0;" (assignment_expression "pSVar34 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                } while ((Select *)puVar4 != pSVar34);" do (compound_statement "{\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);\n                  local_a4->aColl[(int)pSVar34] = pCVar17;\n                  local_a4->aSortFlags[(int)pSVar34] = '\0';\n                  pSVar34 = (Select *)&pSVar34->field_0x1;\n                }" { (expression_statement "pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34);" (assignment_expression "pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34)" identifier = (call_expression "multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34)" identifier (argument_list "(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar34)" ( 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 "local_a4->aColl[(int)pSVar34] = pCVar17;" (assignment_expression "local_a4->aColl[(int)pSVar34] = pCVar17" (subscript_expression "local_a4->aColl[(int)pSVar34]" (field_expression "local_a4->aColl" identifier -> field_identifier) [ (cast_expression "(int)pSVar34" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (expression_statement "local_a4->aSortFlags[(int)pSVar34] = '\0';" (assignment_expression "local_a4->aSortFlags[(int)pSVar34] = '\0'" (subscript_expression "local_a4->aSortFlags[(int)pSVar34]" (field_expression "local_a4->aSortFlags" identifier -> field_identifier) [ (cast_expression "(int)pSVar34" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pSVar34 = (Select *)&pSVar34->field_0x1;" (assignment_expression "pSVar34 = (Select *)&pSVar34->field_0x1" identifier = (cast_expression "(Select *)&pSVar34->field_0x1" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar34->field_0x1" & (field_expression "pSVar34->field_0x1" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "((Select *)puVar4 != pSVar34)" ( (binary_expression "(Select *)puVar4 != pSVar34" (cast_expression "(Select *)puVar4" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != 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 "pEVar16 = p->pOrderBy;" (assignment_expression "pEVar16 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) ;) (expression_statement "pSVar37->pNext = (Select *)0x0;" (assignment_expression "pSVar37->pNext = (Select *)0x0" (field_expression "pSVar37->pNext" identifier -> field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER");" (call_expression "sqlite3ResolveOrderGroupBy(pParse,(Select *)&p->pEList,pEVar16,"ORDER")" identifier (argument_list "(pParse,(Select *)&p->pEList,pEVar16,"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 (pSVar37->pPrior == (Select *)0x0) {\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }" if (parenthesized_expression "(pSVar37->pPrior == (Select *)0x0)" ( (binary_expression "pSVar37->pPrior == (Select *)0x0" (field_expression "pSVar37->pPrior" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");\n            }" { (expression_statement "sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER");" (call_expression "sqlite3ResolveOrderGroupBy\n                        (pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER")" identifier (argument_list "(pParse,(Select *)&pSVar37->pEList,pSVar37->pOrderBy,"ORDER")" ( identifier , (cast_expression "(Select *)&pSVar37->pEList" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pSVar37->pEList" & (field_expression "pSVar37->pEList" identifier -> field_identifier))) , (field_expression "pSVar37->pOrderBy" identifier -> field_identifier) , (string_literal ""ORDER"" " string_content ") ))) ;) })) (expression_statement "computeLimitRegisters(pParse,p,iVar22);" (call_expression "computeLimitRegisters(pParse,p,iVar22)" identifier (argument_list "(pParse,p,iVar22)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar14 = p->iLimit;" (assignment_expression "iVar14 = p->iLimit" identifier = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (if_statement "if ((uVar13 == 0x85) && (iVar14 != 0)) {\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }" if (parenthesized_expression "((uVar13 == 0x85) && (iVar14 != 0))" ( (binary_expression "(uVar13 == 0x85) && (iVar14 != 0)" (parenthesized_expression "(uVar13 == 0x85)" ( (binary_expression "uVar13 == 0x85" identifier == number_literal) )) && (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) ))) )) (compound_statement "{\n              local_9c = pParse->nMem + 1;\n              local_94 = pParse->nMem + 2;\n              pParse->nMem = local_94;\n              if (p->iOffset != 0) {\n                iVar14 = p->iOffset + 1;\n              }\n              sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);\n              sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);\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_94 = pParse->nMem + 2;" (assignment_expression "local_94 = pParse->nMem + 2" identifier = (binary_expression "pParse->nMem + 2" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = local_94;" (assignment_expression "pParse->nMem = local_94" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (if_statement "if (p->iOffset != 0) {\n                iVar14 = 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                iVar14 = p->iOffset + 1;\n              }" { (expression_statement "iVar14 = p->iOffset + 1;" (assignment_expression "iVar14 = p->iOffset + 1" identifier = (binary_expression "p->iOffset + 1" (field_expression "p->iOffset" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0x4d,iVar14,local_9c,0)" identifier (argument_list "(pVVar28,0x4d,iVar14,local_9c,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0x4d,local_9c,local_94,0)" identifier (argument_list "(pVVar28,0x4d,local_9c,local_94,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) }) (else_clause "else {\n              local_94 = 0;\n              local_9c = 0;\n            }" else (compound_statement "{\n              local_94 = 0;\n              local_9c = 0;\n            }" { (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 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 "iVar18 = pParse->nMem;" (assignment_expression "iVar18 = 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 "uVar33 = iVar18 + 2;" (assignment_expression "uVar33 = iVar18 + 2" identifier = (binary_expression "iVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar18 + 1;" (assignment_expression "iVar14 = iVar18 + 1" identifier = (binary_expression "iVar18 + 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 "iVar23 = iVar18 + 3;" (assignment_expression "iVar23 = iVar18 + 3" identifier = (binary_expression "iVar18 + 3" identifier + number_literal)) ;) (expression_statement "iVar18 = iVar18 + 4;" (assignment_expression "iVar18 = iVar18 + 4" identifier = (binary_expression "iVar18 + 4" identifier + number_literal)) ;) (expression_statement "pParse->nMem = iVar18;" (assignment_expression "pParse->nMem = iVar18" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar2 = p->op;" (assignment_expression "uVar2 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (expression_statement "pSVar38 = (SelectDest *)"EXCEPT";" (assignment_expression "pSVar38 = (SelectDest *)"EXCEPT"" identifier = (cast_expression "(SelectDest *)"EXCEPT"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""EXCEPT"" " string_content "))) ;) (if_statement "if ((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)) {\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }" if (parenthesized_expression "((uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87))" ( (binary_expression "(uVar2 != 0x86) && (pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)" (parenthesized_expression "(uVar2 != 0x86)" ( (binary_expression "uVar2 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87)" ( (comma_expression "pSVar38 = (SelectDest *)"INTERSECT", uVar2 != 0x87" (assignment_expression "pSVar38 = (SelectDest *)"INTERSECT"" identifier = (cast_expression "(SelectDest *)"INTERSECT"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""INTERSECT"" " string_content "))) , (binary_expression "uVar2 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n              pSVar38 = (SelectDest *)"UNION ALL";\n              if (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }\n            }" { (expression_statement "pSVar38 = (SelectDest *)"UNION ALL";" (assignment_expression "pSVar38 = (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 (uVar2 != 0x85) {\n                pSVar38 = (SelectDest *)"UNION";\n              }" if (parenthesized_expression "(uVar2 != 0x85)" ( (binary_expression "uVar2 != 0x85" identifier != number_literal) )) (compound_statement "{\n                pSVar38 = (SelectDest *)"UNION";\n              }" { (expression_statement "pSVar38 = (SelectDest *)"UNION";" (assignment_expression "pSVar38 = (SelectDest *)"UNION"" identifier = (cast_expression "(SelectDest *)"UNION"" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""UNION"" " string_content "))) ;) })) })) (expression_statement "destA.iSDParm = iVar14;" (assignment_expression "destA.iSDParm = iVar14" (field_expression "destA.iSDParm" identifier . field_identifier) = identifier) ;) (expression_statement "local_38 = uVar33;" (assignment_expression "local_38 = uVar33" 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 "iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1);" (assignment_expression "iVar19 = sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1)" identifier (argument_list "(pVVar28,0xd,iVar14,0,pVVar28->nOp + 1)" ( identifier , number_literal , identifier , number_literal , (binary_expression "pVVar28->nOp + 1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pSVar37->iLimit = local_9c;" (assignment_expression "pSVar37->iLimit = local_9c" (field_expression "pSVar37->iLimit" identifier -> field_identifier) = identifier) ;) (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,pSVar37,&destA);" (call_expression "sqlite3Select(pParse,pSVar37,&destA)" identifier (argument_list "(pParse,pSVar37,&destA)" ( identifier , identifier , (pointer_expression "&destA" & identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0x42,iVar14,0,0)" identifier (argument_list "(pVVar28,0x42,iVar14,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "pPVar41 = pVVar28->pParse;" (assignment_expression "pPVar41 = pVVar28->pParse" identifier = (field_expression "pVVar28->pParse" identifier -> field_identifier)) ;) (expression_statement "pPVar41->nTempReg = '\0';" (assignment_expression "pPVar41->nTempReg = '\0'" (field_expression "pPVar41->nTempReg" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pPVar41->nRangeReg = 0;" (assignment_expression "pPVar41->nRangeReg = 0" (field_expression "pPVar41->nRangeReg" identifier -> field_identifier) = number_literal) ;) (if_statement "if (iVar19 < 0) {\n              iVar19 = pVVar28->nOp + -1;\n            }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar19 = pVVar28->nOp + -1;\n            }" { (expression_statement "iVar19 = pVVar28->nOp + -1;" (assignment_expression "iVar19 = pVVar28->nOp + -1" identifier = (binary_expression "pVVar28->nOp + -1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar25 = (Op *)&dummy_22674;" (assignment_expression "pOVar25 = (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 (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar19;\n            }" if (parenthesized_expression "(pVVar28->db->mallocFailed == '\0')" ( (binary_expression "pVVar28->db->mallocFailed == '\0'" (field_expression "pVVar28->db->mallocFailed" (field_expression "pVVar28->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar25 = pVVar28->aOp + iVar19;\n            }" { (expression_statement "pOVar25 = pVVar28->aOp + iVar19;" (assignment_expression "pOVar25 = pVVar28->aOp + iVar19" identifier = (binary_expression "pVVar28->aOp + iVar19" (field_expression "pVVar28->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar25->p2 = pVVar28->nOp;" (assignment_expression "pOVar25->p2 = pVVar28->nOp" (field_expression "pOVar25->p2" identifier -> field_identifier) = (field_expression "pVVar28->nOp" identifier -> field_identifier)) ;) (expression_statement "iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1);" (assignment_expression "iVar20 = sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1)" identifier (argument_list "(pVVar28,0xd,uVar33,0,pVVar28->nOp + 1)" ( identifier , number_literal , identifier , number_literal , (binary_expression "pVVar28->nOp + 1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "iVar19 = p->iLimit;" (assignment_expression "iVar19 = p->iLimit" identifier = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (expression_statement "iVar24 = p->iOffset;" (assignment_expression "iVar24 = 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_94;" (assignment_expression "p->iLimit = local_94" (field_expression "p->iLimit" identifier -> field_identifier) = identifier) ;) (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_ac);" (call_expression "sqlite3Select(pParse,p,local_ac)" identifier (argument_list "(pParse,p,local_ac)" ( identifier , identifier , identifier ))) ;) (expression_statement "p->iOffset = iVar24;" (assignment_expression "p->iOffset = iVar24" (field_expression "p->iOffset" identifier -> field_identifier) = identifier) ;) (expression_statement "p->iLimit = iVar19;" (assignment_expression "p->iLimit = iVar19" (field_expression "p->iLimit" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0x42,uVar33,0,0)" identifier (argument_list "(pVVar28,0x42,uVar33,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "pPVar41 = pVVar28->pParse;" (assignment_expression "pPVar41 = pVVar28->pParse" identifier = (field_expression "pVVar28->pParse" identifier -> field_identifier)) ;) (expression_statement "pPVar41->nTempReg = '\0';" (assignment_expression "pPVar41->nTempReg = '\0'" (field_expression "pPVar41->nTempReg" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pPVar41->nRangeReg = 0;" (assignment_expression "pPVar41->nRangeReg = 0" (field_expression "pPVar41->nRangeReg" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);" (assignment_expression "iVar19 = generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24)" identifier = (call_expression "generateOutputSubroutine\n                               (pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24)" identifier (argument_list "(pParse,(Select *)&destA.iSdst,(SelectDest *)&destA.nSdst,pDest,\n                                iVar23,local_90,local_a4,iVar22,pSVar38,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_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if (uVar13 - 0x84 < 2) {\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }" if (parenthesized_expression "(uVar13 - 0x84 < 2)" ( (binary_expression "uVar13 - 0x84 < 2" (binary_expression "uVar13 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);\n            }" { (expression_statement "local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24);" (assignment_expression "local_80 = generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24)" identifier = (call_expression "generateOutputSubroutine\n                                   (pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,in_stack_ffffff24)" identifier (argument_list "(pParse,(Select *)&local_30,(SelectDest *)local_2c,pDest,iVar18,\n                                    local_90,local_a4,iVar22,pSVar38,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_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)) {\n              sqlite3KeyInfoUnref(local_a4);\n            }" if (parenthesized_expression "((local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0))" ( (binary_expression "(local_a4 != (KeyInfo *)0x0) &&\n               (uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)" (parenthesized_expression "(local_a4 != (KeyInfo *)0x0)" ( (binary_expression "local_a4 != (KeyInfo *)0x0" identifier != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0)" ( (comma_expression "uVar21 = local_a4->nRef - 1, local_a4->nRef = uVar21, uVar21 == 0" (assignment_expression "uVar21 = local_a4->nRef - 1" identifier = (binary_expression "local_a4->nRef - 1" (field_expression "local_a4->nRef" identifier -> field_identifier) - number_literal)) , (comma_expression "local_a4->nRef = uVar21, uVar21 == 0" (assignment_expression "local_a4->nRef = uVar21" (field_expression "local_a4->nRef" identifier -> field_identifier) = identifier) , (binary_expression "uVar21 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n              sqlite3KeyInfoUnref(local_a4);\n            }" { (expression_statement "sqlite3KeyInfoUnref(local_a4);" (call_expression "sqlite3KeyInfoUnref(local_a4)" identifier (argument_list "(local_a4)" ( identifier ))) ;) })) (expression_statement "iVar24 = iVar22;" (assignment_expression "iVar24 = iVar22" identifier = identifier) ;) (expression_statement "local_90 = iVar22;" (assignment_expression "local_90 = iVar22" identifier = identifier) ;) (if_statement "if (1 < uVar13 - 0x86) {\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }" if (parenthesized_expression "(1 < uVar13 - 0x86)" ( (binary_expression "1 < uVar13 - 0x86" number_literal < (binary_expression "uVar13 - 0x86" identifier - number_literal)) )) (compound_statement "{\n              iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n              local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n              p->nSelectRow = LVar9;\n            }" { (expression_statement "iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);" (assignment_expression "iVar24 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0)" identifier (argument_list "(pVVar28,0xc,iVar18,local_80,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;) (expression_statement "local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0);" (assignment_expression "local_90 = sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,iVar22,0)" identifier (argument_list "(pVVar28,0xe,uVar33,iVar22,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar24,0)" identifier (argument_list "(pVVar28,0xb,0,iVar24,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);" (assignment_expression "LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow)" identifier = (call_expression "sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow)" identifier (argument_list "(p->nSelectRow,pSVar37->nSelectRow)" ( (field_expression "p->nSelectRow" identifier -> field_identifier) , (field_expression "pSVar37->nSelectRow" identifier -> field_identifier) )))) ;) (expression_statement "p->nSelectRow = LVar9;" (assignment_expression "p->nSelectRow = LVar9" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (uVar13 == 0x87) {\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }\n            else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }" if (parenthesized_expression "(uVar13 == 0x87)" ( (binary_expression "uVar13 == 0x87" identifier == number_literal) )) (compound_statement "{\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a0 = (int)local_a4 + 1;\n              local_ac = (SelectDest *)iVar24;\n            }" { (if_statement "if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }" if (parenthesized_expression "(pSVar37->nSelectRow < p->nSelectRow)" ( (binary_expression "pSVar37->nSelectRow < p->nSelectRow" (field_expression "pSVar37->nSelectRow" identifier -> field_identifier) < (field_expression "p->nSelectRow" identifier -> field_identifier)) )) (compound_statement "{\n                p->nSelectRow = pSVar37->nSelectRow;\n              }" { (expression_statement "p->nSelectRow = pSVar37->nSelectRow;" (assignment_expression "p->nSelectRow = pSVar37->nSelectRow" (field_expression "p->nSelectRow" identifier -> field_identifier) = (field_expression "pSVar37->nSelectRow" identifier -> field_identifier)) ;) })) (expression_statement "local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);" (assignment_expression "local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" identifier = (cast_expression "(KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" identifier (argument_list "(pVVar28,0xc,iVar23,iVar19,0)" ( identifier , number_literal , identifier , identifier , number_literal ))))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0)" identifier (argument_list "(pVVar28,0xe,iVar14,iVar24,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0)" identifier (argument_list "(pVVar28,0xb,0,iVar12,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "local_a0 = (int)local_a4 + 1;" (assignment_expression "local_a0 = (int)local_a4 + 1" identifier = (binary_expression "(int)local_a4 + 1" (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "local_ac = (SelectDest *)iVar24;" (assignment_expression "local_ac = (SelectDest *)iVar24" identifier = (cast_expression "(SelectDest *)iVar24" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }" else (compound_statement "{\n              local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);\n              local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);\n              sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n              sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              local_a4 = (KeyInfo *)local_a0;\n              if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }\n            }" { (expression_statement "local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);" (assignment_expression "local_ac = (SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" identifier = (cast_expression "(SelectDest *)sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" identifier (argument_list "(pVVar28,0xc,iVar23,iVar19,0)" ( identifier , number_literal , identifier , identifier , number_literal ))))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar22,0)" identifier (argument_list "(pVVar28,0xe,iVar14,iVar22,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xb,0,(int)local_ac,0)" identifier (argument_list "(pVVar28,0xb,0,(int)local_ac,0)" ( identifier , number_literal , number_literal , (cast_expression "(int)local_ac" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0);" (assignment_expression "local_a0 = sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0xc,iVar23,iVar19,0)" identifier (argument_list "(pVVar28,0xc,iVar23,iVar19,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0)" identifier (argument_list "(pVVar28,0xe,iVar14,iVar24,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0)" identifier (argument_list "(pVVar28,0xb,0,iVar12,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "local_a4 = (KeyInfo *)local_a0;" (assignment_expression "local_a4 = (KeyInfo *)local_a0" identifier = (cast_expression "(KeyInfo *)local_a0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (uVar13 != 0x85) {\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }" if (parenthesized_expression "(uVar13 != 0x85)" ( (binary_expression "uVar13 != 0x85" identifier != number_literal) )) (compound_statement "{\n                local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);\n                sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);\n              }" { (expression_statement "local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0);" (assignment_expression "local_a4 = (KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0)" identifier = (cast_expression "(KeyInfo *)sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0)" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,iVar24,0)" identifier (argument_list "(pVVar28,0xe,iVar14,iVar24,0)" ( identifier , number_literal , identifier , identifier , number_literal ))))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0)" identifier (argument_list "(pVVar28,0xb,0,iVar12,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) })) }))) (expression_statement "iVar23 = pVVar28->nOp;" (assignment_expression "iVar23 = pVVar28->nOp" identifier = (field_expression "pVVar28->nOp" identifier -> field_identifier)) ;) (if_statement "if (uVar13 - 0x84 < 2) {\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }" if (parenthesized_expression "(uVar13 - 0x84 < 2)" ( (binary_expression "uVar13 - 0x84 < 2" (binary_expression "uVar13 - 0x84" identifier - number_literal) < number_literal) )) (compound_statement "{\n              sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);\n            }" { (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xc,iVar18,local_80,0)" identifier (argument_list "(pVVar28,0xc,iVar18,local_80,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) })) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0)" identifier (argument_list "(pVVar28,0xe,uVar33,(int)local_ac,0)" ( identifier , number_literal , identifier , (cast_expression "(int)local_ac" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xb,0,iVar12,0)" identifier (argument_list "(pVVar28,0xb,0,iVar12,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "iVar18 = pVVar28->nOp + -1;" (assignment_expression "iVar18 = pVVar28->nOp + -1" identifier = (binary_expression "pVVar28->nOp + -1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < iVar20) {\n              iVar18 = iVar20;\n            }" if (parenthesized_expression "(-1 < iVar20)" ( (binary_expression "-1 < iVar20" number_literal < identifier) )) (compound_statement "{\n              iVar18 = iVar20;\n            }" { (expression_statement "iVar18 = iVar20;" (assignment_expression "iVar18 = iVar20" identifier = identifier) ;) })) (expression_statement "pOVar25 = (Op *)&dummy_22674;" (assignment_expression "pOVar25 = (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 (pVVar28->db->mallocFailed == '\0') {\n              pOVar25 = pVVar28->aOp + iVar18;\n            }" if (parenthesized_expression "(pVVar28->db->mallocFailed == '\0')" ( (binary_expression "pVVar28->db->mallocFailed == '\0'" (field_expression "pVVar28->db->mallocFailed" (field_expression "pVVar28->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pOVar25 = pVVar28->aOp + iVar18;\n            }" { (expression_statement "pOVar25 = pVVar28->aOp + iVar18;" (assignment_expression "pOVar25 = pVVar28->aOp + iVar18" identifier = (binary_expression "pVVar28->aOp + iVar18" (field_expression "pVVar28->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar25->p2 = pVVar28->nOp;" (assignment_expression "pOVar25->p2 = pVVar28->nOp" (field_expression "pOVar25->p2" identifier -> field_identifier) = (field_expression "pVVar28->nOp" identifier -> field_identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,iVar14,local_90,0)" identifier (argument_list "(pVVar28,0xe,iVar14,local_90,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0xe,uVar33,(int)local_ac,0)" identifier (argument_list "(pVVar28,0xe,uVar33,(int)local_ac,0)" ( identifier , number_literal , identifier , (cast_expression "(int)local_ac" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "sqlite3VdbeResolveLabel(pVVar28,iVar12);" (call_expression "sqlite3VdbeResolveLabel(pVVar28,iVar12)" identifier (argument_list "(pVVar28,iVar12)" ( identifier , identifier ))) ;) (expression_statement "iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0);" (assignment_expression "iVar12 = sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0x55,0,0,0)" identifier (argument_list "(pVVar28,0x55,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf);" (call_expression "sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)zP4,-0xf)" identifier (argument_list "(pVVar28,iVar12,(char *)zP4,-0xf)" ( identifier , identifier , (cast_expression "(char *)zP4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0);" (assignment_expression "iVar12 = sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0)" identifier = (call_expression "sqlite3VdbeAddOp3(pVVar28,0x56,destA.iSdst,local_30,local_b0)" identifier (argument_list "(pVVar28,0x56,destA.iSdst,local_30,local_b0)" ( identifier , number_literal , (field_expression "destA.iSdst" identifier . field_identifier) , identifier , identifier )))) ;) (expression_statement "sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9);" (call_expression "sqlite3VdbeChangeP4(pVVar28,iVar12,(char *)local_98,-9)" identifier (argument_list "(pVVar28,iVar12,(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 < pVVar28->nOp) {\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }" if (parenthesized_expression "(0 < pVVar28->nOp)" ( (binary_expression "0 < pVVar28->nOp" number_literal < (field_expression "pVVar28->nOp" identifier -> field_identifier)) )) (compound_statement "{\n              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;\n            }" { (expression_statement "pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;" (assignment_expression "pVVar28->aOp[pVVar28->nOp + -1].p5 = 1" (field_expression "pVVar28->aOp[pVVar28->nOp + -1].p5" (subscript_expression "pVVar28->aOp[pVVar28->nOp + -1]" (field_expression "pVVar28->aOp" identifier -> field_identifier) [ (binary_expression "pVVar28->nOp + -1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) (expression_statement "sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23);" (call_expression "sqlite3VdbeAddOp3(pVVar28,0x10,local_a0,(int)local_a4,iVar23)" identifier (argument_list "(pVVar28,0x10,local_a0,(int)local_a4,iVar23)" ( identifier , number_literal , identifier , (cast_expression "(int)local_a4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (expression_statement "sqlite3VdbeResolveLabel(pVVar28,iVar22);" (call_expression "sqlite3VdbeResolveLabel(pVVar28,iVar22)" identifier (argument_list "(pVVar28,iVar22)" ( 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 = pSVar37;" (assignment_expression "p->pPrior = pSVar37" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar37->pNext = p;" (assignment_expression "pSVar37->pNext = p" (field_expression "pSVar37->pNext" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar22 = pParse->addrExplain;" (assignment_expression "iVar22 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar22 != 0) {\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n              pVVar28 = pParse->pVdbe;\n              if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }\n              pOVar25 = (Op *)&dummy_22674;\n              if (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }\n              iVar22 = pOVar25->p2;\n            }" { (expression_statement "pVVar28 = pParse->pVdbe;" (assignment_expression "pVVar28 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (iVar22 < 0) {\n                iVar22 = pVVar28->nOp + -1;\n              }" if (parenthesized_expression "(iVar22 < 0)" ( (binary_expression "iVar22 < 0" identifier < number_literal) )) (compound_statement "{\n                iVar22 = pVVar28->nOp + -1;\n              }" { (expression_statement "iVar22 = pVVar28->nOp + -1;" (assignment_expression "iVar22 = pVVar28->nOp + -1" identifier = (binary_expression "pVVar28->nOp + -1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar25 = (Op *)&dummy_22674;" (assignment_expression "pOVar25 = (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 (pVVar28->db->mallocFailed == '\0') {\n                pOVar25 = pVVar28->aOp + iVar22;\n              }" if (parenthesized_expression "(pVVar28->db->mallocFailed == '\0')" ( (binary_expression "pVVar28->db->mallocFailed == '\0'" (field_expression "pVVar28->db->mallocFailed" (field_expression "pVVar28->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                pOVar25 = pVVar28->aOp + iVar22;\n              }" { (expression_statement "pOVar25 = pVVar28->aOp + iVar22;" (assignment_expression "pOVar25 = pVVar28->aOp + iVar22" identifier = (binary_expression "pVVar28->aOp + iVar22" (field_expression "pVVar28->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "iVar22 = pOVar25->p2;" (assignment_expression "iVar22 = pOVar25->p2" identifier = (field_expression "pOVar25->p2" identifier -> field_identifier)) ;) })) (expression_statement "pParse->addrExplain = iVar22;" (assignment_expression "pParse->addrExplain = iVar22" (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_00081db1;" goto statement_identifier ;) })) (if_statement "if (pSVar37->pPrior == (Select *)0x0) {\n            sqlite3VdbeExplain(pParse,'\x01',"COMPOUND QUERY");\n            sqlite3VdbeExplain(pParse,'\x01',"LEFT-MOST SUBQUERY");\n          }" if (parenthesized_expression "(pSVar37->pPrior == (Select *)0x0)" ( (binary_expression "pSVar37->pPrior == (Select *)0x0" (field_expression "pSVar37->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            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 "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 "uVar2 = p->op;" (assignment_expression "uVar2 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == 0x85) {\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" if (parenthesized_expression "(uVar2 == 0x85)" ( (binary_expression "uVar2 == 0x85" identifier == number_literal) )) (compound_statement "{\n            pSVar37->iLimit = p->iLimit;\n            pSVar37->iOffset = p->iOffset;\n            pSVar37->pLimit = p->pLimit;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);\n            p->pLimit = (Expr *)0x0;\n            if (local_d0 == (Select *)0x0) {\n              local_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }\n          }" { (expression_statement "pSVar37->iLimit = p->iLimit;" (assignment_expression "pSVar37->iLimit = p->iLimit" (field_expression "pSVar37->iLimit" identifier -> field_identifier) = (field_expression "p->iLimit" identifier -> field_identifier)) ;) (expression_statement "pSVar37->iOffset = p->iOffset;" (assignment_expression "pSVar37->iOffset = p->iOffset" (field_expression "pSVar37->iOffset" identifier -> field_identifier) = (field_expression "p->iOffset" identifier -> field_identifier)) ;) (expression_statement "pSVar37->pLimit = p->pLimit;" (assignment_expression "pSVar37->pLimit = p->pLimit" (field_expression "pSVar37->pLimit" identifier -> field_identifier) = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,pSVar37,&dest)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,pSVar37,&dest)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,pSVar37,&dest)" identifier (argument_list "(pParse,pSVar37,&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_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\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_c0 = pSVar37->iLimit;\n              iVar22 = pSVar37->iOffset;\n              p->pPrior = (Select *)0x0;\n              p->iLimit = local_c0;\n              p->iOffset = iVar22;\n              if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"UNION ALL");\n              local_d0 = (Select *)sqlite3Select(pParse,p,&dest);\n              local_c4 = (Vdbe *)p->pPrior;\n              LVar9 = pSVar37->nSelectRow;\n              p->pPrior = pSVar37;\n              LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);\n              p->nSelectRow = LVar9;\n              if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }\n              goto LAB_00082ed0;\n            }" { (expression_statement "local_c0 = pSVar37->iLimit;" (assignment_expression "local_c0 = pSVar37->iLimit" identifier = (field_expression "pSVar37->iLimit" identifier -> field_identifier)) ;) (expression_statement "iVar22 = pSVar37->iOffset;" (assignment_expression "iVar22 = pSVar37->iOffset" identifier = (field_expression "pSVar37->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 = local_c0;" (assignment_expression "p->iLimit = local_c0" (field_expression "p->iLimit" identifier -> field_identifier) = identifier) ;) (expression_statement "p->iOffset = iVar22;" (assignment_expression "p->iOffset = iVar22" (field_expression "p->iOffset" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_c0 != 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n                local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);\n                iVar22 = p->iOffset;\n                if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }\n              }" { (expression_statement "local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0);" (assignment_expression "local_c0 = sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,0x14,local_c0,0,0)" identifier (argument_list "(local_c8,0x14,local_c0,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal )))) ;) (expression_statement "iVar22 = p->iOffset;" (assignment_expression "iVar22 = p->iOffset" identifier = (field_expression "p->iOffset" identifier -> field_identifier)) ;) (if_statement "if (iVar22 != 0) {\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);\n                }" { (expression_statement "sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22)" identifier (argument_list "(local_c8,0x98,p->iLimit,iVar22 + 1,iVar22)" ( identifier , number_literal , (field_expression "p->iLimit" identifier -> field_identifier) , (binary_expression "iVar22 + 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_c4 = (Vdbe *)p->pPrior;" (assignment_expression "local_c4 = (Vdbe *)p->pPrior" identifier = (cast_expression "(Vdbe *)p->pPrior" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pPrior" identifier -> field_identifier))) ;) (expression_statement "LVar9 = pSVar37->nSelectRow;" (assignment_expression "LVar9 = pSVar37->nSelectRow" identifier = (field_expression "pSVar37->nSelectRow" identifier -> field_identifier)) ;) (expression_statement "p->pPrior = pSVar37;" (assignment_expression "p->pPrior = pSVar37" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (expression_statement "LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9);" (assignment_expression "LVar9 = sqlite3LogEstAdd(p->nSelectRow,LVar9)" identifier = (call_expression "sqlite3LogEstAdd(p->nSelectRow,LVar9)" identifier (argument_list "(p->nSelectRow,LVar9)" ( (field_expression "p->nSelectRow" identifier -> field_identifier) , identifier )))) ;) (expression_statement "p->nSelectRow = LVar9;" (assignment_expression "p->nSelectRow = LVar9" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;) (if_statement "if (((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)) {\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }" if (parenthesized_expression "(((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit))" ( (binary_expression "((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)) &&\n                 (0 < nLimit)" (parenthesized_expression "((pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0))" ( (binary_expression "(pSVar37->pLimit != (Expr *)0x0) &&\n                  (iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)" (parenthesized_expression "(pSVar37->pLimit != (Expr *)0x0)" ( (binary_expression "pSVar37->pLimit != (Expr *)0x0" (field_expression "pSVar37->pLimit" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0)" ( (comma_expression "iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit), iVar22 != 0" (assignment_expression "iVar22 = sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit)" identifier = (call_expression "sqlite3ExprIsInteger(pSVar37->pLimit->pLeft,&nLimit)" identifier (argument_list "(pSVar37->pLimit->pLeft,&nLimit)" ( (field_expression "pSVar37->pLimit->pLeft" (field_expression "pSVar37->pLimit" identifier -> field_identifier) -> field_identifier) , (pointer_expression "&nLimit" & identifier) )))) , (binary_expression "iVar22 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(0 < nLimit)" ( (binary_expression "0 < nLimit" number_literal < identifier) ))) )) (compound_statement "{\n                sVar10 = p->nSelectRow;\n                uVar13 = nLimit >> 0x1f;\n                if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }\n              }" { (expression_statement "sVar10 = p->nSelectRow;" (assignment_expression "sVar10 = p->nSelectRow" identifier = (field_expression "p->nSelectRow" identifier -> field_identifier)) ;) (expression_statement "uVar13 = nLimit >> 0x1f;" (assignment_expression "uVar13 = nLimit >> 0x1f" identifier = (binary_expression "nLimit >> 0x1f" identifier >> number_literal)) ;) (if_statement "if (nLimit < 8) {\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }" if (parenthesized_expression "(nLimit < 8)" ( (binary_expression "nLimit < 8" identifier < number_literal) )) (compound_statement "{\n                  if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }" { (if_statement "if (nLimit == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" if (parenthesized_expression "(nLimit == 1)" ( (binary_expression "nLimit == 1" identifier == number_literal) )) (compound_statement "{\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }" { (if_statement "if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" if (parenthesized_expression "(0 < sVar10)" ( (binary_expression "0 < sVar10" number_literal < identifier) )) (compound_statement "{\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00083ad6;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" else (compound_statement "{\n                    uVar29 = nLimit;\n                    uVar33 = uVar13;\n                    sVar7 = 0x28;\n                    do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" { (expression_statement "uVar29 = nLimit;" (assignment_expression "uVar29 = nLimit" identifier = identifier) ;) (expression_statement "uVar33 = uVar13;" (assignment_expression "uVar33 = uVar13" identifier = identifier) ;) (expression_statement "sVar7 = 0x28;" (assignment_expression "sVar7 = 0x28" identifier = number_literal) ;) (do_statement "do {\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    } while (uVar5 < 8);" do (compound_statement "{\n                      sVar30 = sVar7;\n                      uVar5 = uVar29 * 2;\n                      if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;\n                      uVar33 = 0;\n                      uVar29 = uVar5;\n                      sVar7 = sVar30 + -10;\n                    }" { (expression_statement "sVar30 = sVar7;" (assignment_expression "sVar30 = sVar7" identifier = identifier) ;) (expression_statement "uVar5 = uVar29 * 2;" (assignment_expression "uVar5 = uVar29 * 2" identifier = (binary_expression "uVar29 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0) break;" if (parenthesized_expression "((uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0)" ( (binary_expression "(uVar33 & 0x7fffffff) != 0 || (int)uVar29 < 0" (binary_expression "(uVar33 & 0x7fffffff) != 0" (parenthesized_expression "(uVar33 & 0x7fffffff)" ( (binary_expression "uVar33 & 0x7fffffff" identifier & number_literal) )) != number_literal) || (binary_expression "(int)uVar29 < 0" (cast_expression "(int)uVar29" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;) (expression_statement "uVar29 = uVar5;" (assignment_expression "uVar29 = uVar5" identifier = identifier) ;) (expression_statement "sVar7 = sVar30 + -10;" (assignment_expression "sVar7 = sVar30 + -10" identifier = (binary_expression "sVar30 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < 8)" ( (binary_expression "uVar5 < 8" identifier < number_literal) )) ;) (if_statement "if ((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" if (parenthesized_expression "((short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10)" ( (binary_expression "(short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)) < sVar10" (cast_expression "(short)(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2))" ( (binary_expression "sVar30 + -0x14 + *(short *)(a_14957 + (uVar5 & 7) * 2)" (binary_expression "sVar30 + -0x14" identifier + number_literal) + (pointer_expression "*(short *)(a_14957 + (uVar5 & 7) * 2)" * (cast_expression "(short *)(a_14957 + (uVar5 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(a_14957 + (uVar5 & 7) * 2)" ( (binary_expression "a_14957 + (uVar5 & 7) * 2" identifier + (binary_expression "(uVar5 & 7) * 2" (parenthesized_expression "(uVar5 & 7)" ( (binary_expression "uVar5 & 7" identifier & number_literal) )) * number_literal)) ))))) ))) < identifier) )) (compound_statement "{\n                      sVar10 = 0x28;\n                      local_bc = nLimit;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" { (expression_statement "sVar10 = 0x28;" (assignment_expression "sVar10 = 0x28" identifier = number_literal) ;) (expression_statement "local_bc = nLimit;" (assignment_expression "local_bc = nLimit" identifier = identifier) ;) (do_statement "do {\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      } while (local_bc < 8);" do (compound_statement "{\n                        sVar10 = sVar10 + -10;\n                        bVar40 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar13 * 2 + (uint)bVar40 != 0) break;\n                        uVar13 = 0;\n                      }" { (expression_statement "sVar10 = sVar10 + -10;" (assignment_expression "sVar10 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) (expression_statement "bVar40 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar40 = 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 (uVar13 * 2 + (uint)bVar40 != 0) break;" if (parenthesized_expression "(uVar13 * 2 + (uint)bVar40 != 0)" ( (binary_expression "uVar13 * 2 + (uint)bVar40 != 0" (binary_expression "uVar13 * 2 + (uint)bVar40" (binary_expression "uVar13 * 2" identifier * number_literal) + (cast_expression "(uint)bVar40" ( (type_descriptor "uint" type_identifier) ) identifier)) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_bc < 8)" ( (binary_expression "local_bc < 8" identifier < number_literal) )) ;) (goto_statement "goto LAB_00083ac3;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }" else (compound_statement "{\n                  if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }\n                  uVar33 = 0x3c - uVar33;\n                  bVar8 = (byte)uVar33 & 0x1f;\n                  uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                  if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }\n                  if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }\n                }" { (if_statement "if (nLimit < 0) {\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }\n                  else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                    uVar33 = 0x1f;\n                    if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = uVar33 ^ 0x1f;\n                  }" { (expression_statement "uVar33 = 0x1f;" (assignment_expression "uVar33 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit < 0) {\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                      for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }" { (for_statement "for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }" for ( ; (binary_expression "uVar13 >> uVar33 == 0" (binary_expression "uVar13 >> uVar33" identifier >> identifier) == number_literal) ; (assignment_expression "uVar33 = uVar33 - 1" identifier = (binary_expression "uVar33 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar33 = uVar33 ^ 0x1f;" (assignment_expression "uVar33 = uVar33 ^ 0x1f" identifier = (binary_expression "uVar33 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }" else (compound_statement "{\n                    uVar33 = 0x1f;\n                    if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }\n                    uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                  }" { (expression_statement "uVar33 = 0x1f;" (assignment_expression "uVar33 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit != 0) {\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }" if (parenthesized_expression "(nLimit != 0)" ( (binary_expression "nLimit != 0" identifier != number_literal) )) (compound_statement "{\n                      for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }\n                    }" { (for_statement "for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                      }" for ( ; (binary_expression "(uint)nLimit >> uVar33 == 0" (binary_expression "(uint)nLimit >> uVar33" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) == number_literal) ; (assignment_expression "uVar33 = uVar33 - 1" identifier = (binary_expression "uVar33 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar33 = (uVar33 ^ 0x1f) + 0x20;" (assignment_expression "uVar33 = (uVar33 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar33 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar33 ^ 0x1f)" ( (binary_expression "uVar33 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar33 = 0x3c - uVar33;" (assignment_expression "uVar33 = 0x3c - uVar33" identifier = (binary_expression "0x3c - uVar33" number_literal - identifier)) ;) (expression_statement "bVar8 = (byte)uVar33 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar33 & 0x1f" identifier = (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar29 = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8" identifier = (binary_expression "(uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uint)nLimit >> bVar8" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "uVar13 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar33 & 0x20) != 0) {\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }" if (parenthesized_expression "((uVar33 & 0x20) != 0)" ( (binary_expression "(uVar33 & 0x20) != 0" (parenthesized_expression "(uVar33 & 0x20)" ( (binary_expression "uVar33 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);\n                  }" { (expression_statement "uVar29 = uVar13 >> ((byte)uVar33 & 0x1f);" (assignment_expression "uVar29 = uVar13 >> ((byte)uVar33 & 0x1f)" identifier = (binary_expression "uVar13 >> ((byte)uVar33 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar33 & 0x1f)" ( (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10) {\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }" if (parenthesized_expression "((short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10)" ( (binary_expression "(short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)) <\n                      sVar10" (cast_expression "(short)((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2))" ( (binary_expression "(short)uVar33 * 10 + 0x1e + *(short *)(a_14957 + (uVar29 & 7) * 2)" (binary_expression "(short)uVar33 * 10 + 0x1e" (binary_expression "(short)uVar33 * 10" (cast_expression "(short)uVar33" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal) + (pointer_expression "*(short *)(a_14957 + (uVar29 & 7) * 2)" * (cast_expression "(short *)(a_14957 + (uVar29 & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(a_14957 + (uVar29 & 7) * 2)" ( (binary_expression "a_14957 + (uVar29 & 7) * 2" identifier + (binary_expression "(uVar29 & 7) * 2" (parenthesized_expression "(uVar29 & 7)" ( (binary_expression "uVar29 & 7" identifier & number_literal) )) * number_literal)) ))))) ))) < identifier) )) (compound_statement "{\n                    if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }\n                    uVar33 = 0x3c - uVar33;\n                    sVar10 = (short)uVar33 * 10 + 0x28;\n                    bVar8 = (byte)uVar33 & 0x1f;\n                    local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;\n                    if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);\nLAB_00083ad6:\n                    p->nSelectRow = sVar10;\n                  }" { (if_statement "if (nLimit < 0) {\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }\n                    else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                      uVar33 = 0x1f;\n                      if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = uVar33 ^ 0x1f;\n                    }" { (expression_statement "uVar33 = 0x1f;" (assignment_expression "uVar33 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit < 0) {\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }" if (parenthesized_expression "(nLimit < 0)" ( (binary_expression "nLimit < 0" identifier < number_literal) )) (compound_statement "{\n                        for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }" { (for_statement "for (; uVar13 >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }" for ( ; (binary_expression "uVar13 >> uVar33 == 0" (binary_expression "uVar13 >> uVar33" identifier >> identifier) == number_literal) ; (assignment_expression "uVar33 = uVar33 - 1" identifier = (binary_expression "uVar33 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar33 = uVar33 ^ 0x1f;" (assignment_expression "uVar33 = uVar33 ^ 0x1f" identifier = (binary_expression "uVar33 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }" else (compound_statement "{\n                      uVar33 = 0x1f;\n                      if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }\n                      uVar33 = (uVar33 ^ 0x1f) + 0x20;\n                    }" { (expression_statement "uVar33 = 0x1f;" (assignment_expression "uVar33 = 0x1f" identifier = number_literal) ;) (if_statement "if (nLimit != 0) {\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }" if (parenthesized_expression "(nLimit != 0)" ( (binary_expression "nLimit != 0" identifier != number_literal) )) (compound_statement "{\n                        for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }\n                      }" { (for_statement "for (; (uint)nLimit >> uVar33 == 0; uVar33 = uVar33 - 1) {\n                        }" for ( ; (binary_expression "(uint)nLimit >> uVar33 == 0" (binary_expression "(uint)nLimit >> uVar33" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) == number_literal) ; (assignment_expression "uVar33 = uVar33 - 1" identifier = (binary_expression "uVar33 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar33 = (uVar33 ^ 0x1f) + 0x20;" (assignment_expression "uVar33 = (uVar33 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar33 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar33 ^ 0x1f)" ( (binary_expression "uVar33 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar33 = 0x3c - uVar33;" (assignment_expression "uVar33 = 0x3c - uVar33" identifier = (binary_expression "0x3c - uVar33" number_literal - identifier)) ;) (expression_statement "sVar10 = (short)uVar33 * 10 + 0x28;" (assignment_expression "sVar10 = (short)uVar33 * 10 + 0x28" identifier = (binary_expression "(short)uVar33 * 10 + 0x28" (binary_expression "(short)uVar33 * 10" (cast_expression "(short)uVar33" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar33 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar33 & 0x1f" identifier = (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "local_bc = (uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8" identifier = (binary_expression "(uint)nLimit >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uint)nLimit >> bVar8" (cast_expression "(uint)nLimit" ( (type_descriptor "uint" type_identifier) ) identifier) >> identifier) | (binary_expression "uVar13 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar33 & 0x20) != 0) {\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }" if (parenthesized_expression "((uVar33 & 0x20) != 0)" ( (binary_expression "(uVar33 & 0x20) != 0" (parenthesized_expression "(uVar33 & 0x20)" ( (binary_expression "uVar33 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      local_bc = uVar13 >> ((byte)uVar33 & 0x1f);\n                    }" { (expression_statement "local_bc = uVar13 >> ((byte)uVar33 & 0x1f);" (assignment_expression "local_bc = uVar13 >> ((byte)uVar33 & 0x1f)" identifier = (binary_expression "uVar13 >> ((byte)uVar33 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar33 & 0x1f)" ( (binary_expression "(byte)uVar33 & 0x1f" (cast_expression "(byte)uVar33" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (labeled_statement "LAB_00083ac3:\n                    sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);" statement_identifier : (expression_statement "sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2);" (assignment_expression "sVar10 = sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2)" identifier = (binary_expression "sVar10 + -10 + *(short *)(a_14957 + (local_bc & 7) * 2)" (binary_expression "sVar10 + -10" identifier + number_literal) + (pointer_expression "*(short *)(a_14957 + (local_bc & 7) * 2)" * (cast_expression "(short *)(a_14957 + (local_bc & 7) * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(a_14957 + (local_bc & 7) * 2)" ( (binary_expression "a_14957 + (local_bc & 7) * 2" 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_00083ad6:\n                    p->nSelectRow = sVar10;" statement_identifier : (expression_statement "p->nSelectRow = sVar10;" (assignment_expression "p->nSelectRow = sVar10" (field_expression "p->nSelectRow" identifier -> field_identifier) = identifier) ;)) })) }))) })) (if_statement "if (local_c0 != 0) {\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar13 = local_c8->nOp + -1;\n                if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }\n                pOVar25 = (Op *)&dummy_22674;\n                if (local_c8->db->mallocFailed == '\0') {\n                  pOVar25 = local_c8->aOp + uVar13;\n                }\n                pOVar25->p2 = local_c8->nOp;\n              }" { (expression_statement "uVar13 = local_c8->nOp + -1;" (assignment_expression "uVar13 = local_c8->nOp + -1" identifier = (binary_expression "local_c8->nOp + -1" (field_expression "local_c8->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < (int)local_c0) {\n                  uVar13 = local_c0;\n                }" if (parenthesized_expression "(-1 < (int)local_c0)" ( (binary_expression "-1 < (int)local_c0" number_literal < (cast_expression "(int)local_c0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                  uVar13 = local_c0;\n                }" { (expression_statement "uVar13 = local_c0;" (assignment_expression "uVar13 = local_c0" identifier = identifier) ;) })) (expression_statement "pOVar25 = (Op *)&dummy_22674;" (assignment_expression "pOVar25 = (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                  pOVar25 = local_c8->aOp + uVar13;\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                  pOVar25 = local_c8->aOp + uVar13;\n                }" { (expression_statement "pOVar25 = local_c8->aOp + uVar13;" (assignment_expression "pOVar25 = local_c8->aOp + uVar13" identifier = (binary_expression "local_c8->aOp + uVar13" (field_expression "local_c8->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar25->p2 = local_c8->nOp;" (assignment_expression "pOVar25->p2 = local_c8->nOp" (field_expression "pOVar25->p2" identifier -> field_identifier) = (field_expression "local_c8->nOp" identifier -> field_identifier)) ;) })) (goto_statement "goto LAB_00082ed0;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" else (compound_statement "{\n            if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            local_c0 = pParse->nTab;\n            pParse->nTab = local_c0 + 2;\n            iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n            p->addrOpenEphm[0] = iVar22;\n            pSVar34 = p;\n            do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);\n            puVar1 = &pSVar36->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 = local_c0;\n            local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n            if (local_d0 == (Select *)0x0) {\n              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" { (if_statement "if ((uVar2 == 0x86) || (uVar2 == 0x84)) {\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" if (parenthesized_expression "((uVar2 == 0x86) || (uVar2 == 0x84))" ( (binary_expression "(uVar2 == 0x86) || (uVar2 == 0x84)" (parenthesized_expression "(uVar2 == 0x86)" ( (binary_expression "uVar2 == 0x86" identifier == number_literal) )) || (parenthesized_expression "(uVar2 == 0x84)" ( (binary_expression "uVar2 == 0x84" identifier == number_literal) ))) )) (compound_statement "{\n              if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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 = local_c0;\n              local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);\n              if (local_d0 != (Select *)0x0) goto LAB_00082b00;\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              if (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pOrderBy = (ExprList *)0x0;\n              p->pPrior = pSVar37;\n              if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->iLimit = 0;\n              p->iOffset = 0;\n              p->pLimit = pEVar15;\n              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }\nLAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }\n              if (pParse->nErr == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" { (if_statement "if (dest.eDest == '\x01') {\n                local_c0 = dest.iSDParm;\n              }\n              else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->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_c0 = dest.iSDParm;\n              }" { (expression_statement "local_c0 = dest.iSDParm;" (assignment_expression "local_c0 = dest.iSDParm" identifier = (field_expression "dest.iSDParm" identifier . field_identifier)) ;) }) (else_clause "else {\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }" else (compound_statement "{\n                local_c0 = pParse->nTab;\n                pParse->nTab = local_c0 + 1;\n                iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);\n                p->addrOpenEphm[0] = iVar22;\n                pSVar34 = p;\n                do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);\n                puVar1 = &pSVar36->selFlags;\n                *puVar1 = *puVar1 | 0x20;\n              }" { (expression_statement "local_c0 = pParse->nTab;" (assignment_expression "local_c0 = pParse->nTab" identifier = (field_expression "pParse->nTab" identifier -> field_identifier)) ;) (expression_statement "pParse->nTab = local_c0 + 1;" (assignment_expression "pParse->nTab = local_c0 + 1" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (expression_statement "iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0)" identifier (argument_list "(local_c8,100,local_c0,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal )))) ;) (expression_statement "p->addrOpenEphm[0] = iVar22;" (assignment_expression "p->addrOpenEphm[0] = iVar22" (subscript_expression "p->addrOpenEphm[0]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pSVar34 = p;" (assignment_expression "pSVar34 = p" identifier = identifier) ;) (do_statement "do {\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                } while (pSVar34 != (Select *)0x0);" do (compound_statement "{\n                  pSVar36 = pSVar34;\n                  pSVar34 = pSVar36->pNext;\n                }" { (expression_statement "pSVar36 = pSVar34;" (assignment_expression "pSVar36 = pSVar34" identifier = identifier) ;) (expression_statement "pSVar34 = pSVar36->pNext;" (assignment_expression "pSVar34 = pSVar36->pNext" identifier = (field_expression "pSVar36->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar34 != (Select *)0x0)" ( (binary_expression "pSVar34 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar1 = &pSVar36->selFlags;" (assignment_expression "puVar1 = &pSVar36->selFlags" identifier = (pointer_expression "&pSVar36->selFlags" & (field_expression "pSVar36->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 = local_c0;" (assignment_expression "local_38 = local_c0" identifier = identifier) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,pSVar37,(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_00082b00;" 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_00082b00;" goto statement_identifier ;)) (expression_statement "uVar2 = p->op;" (assignment_expression "uVar2 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (expression_statement "pEVar15 = p->pLimit;" (assignment_expression "pEVar15 = 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 (uVar2 == 0x86) {\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "EXCEPT";\n              }\n              else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }" if (parenthesized_expression "(uVar2 == 0x86)" ( (binary_expression "uVar2 == 0x86" identifier == number_literal) )) (compound_statement "{\n                nLimit = CONCAT31(nLimit._1_3_,2);\n                pcVar27 = "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 "pcVar27 = "EXCEPT";" (assignment_expression "pcVar27 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) }) (else_clause "else {\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }\n              }" else (compound_statement "{\n                nLimit = CONCAT31(nLimit._1_3_,1);\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "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 "pcVar27 = "UNION ALL";" (assignment_expression "pcVar27 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) (if_statement "if (uVar2 != 0x85) {\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }" if (parenthesized_expression "(uVar2 != 0x85)" ( (binary_expression "uVar2 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  pcVar27 = "INTERSECT";\n                  if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }\n                }" { (expression_statement "pcVar27 = "INTERSECT";" (assignment_expression "pcVar27 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) ;) (if_statement "if (uVar2 != 0x87) {\n                    pcVar27 = "UNION";\n                  }" if (parenthesized_expression "(uVar2 != 0x87)" ( (binary_expression "uVar2 != 0x87" identifier != number_literal) )) (compound_statement "{\n                    pcVar27 = "UNION";\n                  }" { (expression_statement "pcVar27 = "UNION";" (assignment_expression "pcVar27 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) })) })) }))) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27)" identifier (argument_list "(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27)" ( 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_c4 = (Vdbe *)p->pPrior;" (assignment_expression "local_c4 = (Vdbe *)p->pPrior" identifier = (cast_expression "(Vdbe *)p->pPrior" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (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 = pSVar37;" (assignment_expression "p->pPrior = pSVar37" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (if_statement "if (p->op == 0x84) {\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }" if (parenthesized_expression "(p->op == 0x84)" ( (binary_expression "p->op == 0x84" (field_expression "p->op" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);\n                p->nSelectRow = LVar9;\n              }" { (expression_statement "LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow);" (assignment_expression "LVar9 = sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow)" identifier = (call_expression "sqlite3LogEstAdd(p->nSelectRow,pSVar37->nSelectRow)" identifier (argument_list "(p->nSelectRow,pSVar37->nSelectRow)" ( (field_expression "p->nSelectRow" identifier -> field_identifier) , (field_expression "pSVar37->nSelectRow" identifier -> field_identifier) )))) ;) (expression_statement "p->nSelectRow = LVar9;" (assignment_expression "p->nSelectRow = LVar9" (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 = pEVar15;" (assignment_expression "p->pLimit = pEVar15" (field_expression "p->pLimit" identifier -> field_identifier) = identifier) ;) (if_statement "if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\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                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                pPVar41 = pParse;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                pSVar38 = (SelectDest *)0x0;\n                iBreak = pPVar41;\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                iVar22 = local_c8->nOp;\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\nLAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);\n              }" { (expression_statement "pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);" (assignment_expression "pDVar31 = (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 "pSVar39 = (SortCtx *)(pParse->nLabel + -2);" (assignment_expression "pSVar39 = (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)pSVar39;" (assignment_expression "pParse->nLabel = (int)pSVar39" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pPVar41 = pParse;" (assignment_expression "pPVar41 = pParse" identifier = identifier) ;) (expression_statement "computeLimitRegisters(pParse,p,(int)pDVar31);" (call_expression "computeLimitRegisters(pParse,p,(int)pDVar31)" identifier (argument_list "(pParse,p,(int)pDVar31)" ( identifier , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pSVar38 = (SelectDest *)0x0;" (assignment_expression "pSVar38 = (SelectDest *)0x0" identifier = (cast_expression "(SelectDest *)0x0" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iBreak = pPVar41;" (assignment_expression "iBreak = pPVar41" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0)" identifier (argument_list "(local_c8,0x25,local_c0,(int)pDVar31,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "iVar22 = local_c8->nOp;" (assignment_expression "iVar22 = local_c8->nOp" identifier = (field_expression "local_c8->nOp" identifier -> field_identifier)) ;) (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,\n                                (int)pPVar41,(int)iBreak)" ( (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)pPVar41" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)iBreak" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pSVar39)" identifier (argument_list "(local_c8,(int)pSVar39)" ( identifier , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0)" identifier (argument_list "(local_c8,5,local_c0,iVar22,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pDVar31)" identifier (argument_list "(local_c8,(int)pDVar31)" ( identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (labeled_statement "LAB_00083517:\n                sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x74,local_c0,0,0)" identifier (argument_list "(local_c8,0x74,local_c0,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;)) })) (labeled_statement "LAB_00082ed0:\n              if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }" statement_identifier : (if_statement "if (p->pNext == (Select *)0x0) {\n                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\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                iVar22 = pParse->addrExplain;\n                if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }\n                pParse->addrExplain = iVar22;\n              }" { (expression_statement "iVar22 = pParse->addrExplain;" (assignment_expression "iVar22 = pParse->addrExplain" identifier = (field_expression "pParse->addrExplain" identifier -> field_identifier)) ;) (if_statement "if (iVar22 != 0) {\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n                  pVVar28 = pParse->pVdbe;\n                  if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }\n                  iVar22 = pOVar25->p2;\n                }" { (expression_statement "pVVar28 = pParse->pVdbe;" (assignment_expression "pVVar28 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (if_statement "if (iVar22 < 0) {\n                    iVar22 = pVVar28->nOp + -1;\n                  }" if (parenthesized_expression "(iVar22 < 0)" ( (binary_expression "iVar22 < 0" identifier < number_literal) )) (compound_statement "{\n                    iVar22 = pVVar28->nOp + -1;\n                  }" { (expression_statement "iVar22 = pVVar28->nOp + -1;" (assignment_expression "iVar22 = pVVar28->nOp + -1" identifier = (binary_expression "pVVar28->nOp + -1" (field_expression "pVVar28->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar25 = (Op *)&dummy_22674;" (assignment_expression "pOVar25 = (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 (pVVar28->db->mallocFailed == '\0') {\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }" if (parenthesized_expression "(pVVar28->db->mallocFailed == '\0')" ( (binary_expression "pVVar28->db->mallocFailed == '\0'" (field_expression "pVVar28->db->mallocFailed" (field_expression "pVVar28->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    pOVar25 = pVVar28->aOp + iVar22;\n                  }" { (expression_statement "pOVar25 = pVVar28->aOp + iVar22;" (assignment_expression "pOVar25 = pVVar28->aOp + iVar22" identifier = (binary_expression "pVVar28->aOp + iVar22" (field_expression "pVVar28->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "iVar22 = pOVar25->p2;" (assignment_expression "iVar22 = pOVar25->p2" identifier = (field_expression "pOVar25->p2" identifier -> field_identifier)) ;) })) (expression_statement "pParse->addrExplain = iVar22;" (assignment_expression "pParse->addrExplain = iVar22" (field_expression "pParse->addrExplain" identifier -> field_identifier) = identifier) ;) }))) (if_statement "if (pParse->nErr == 0) goto LAB_00082732;" if (parenthesized_expression "(pParse->nErr == 0)" ( (binary_expression "pParse->nErr == 0" (field_expression "pParse->nErr" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_00082732;" goto statement_identifier ;)) (goto_statement "goto LAB_0008273c;" goto statement_identifier ;) })) (expression_statement "local_c0 = pParse->nTab;" (assignment_expression "local_c0 = pParse->nTab" identifier = (field_expression "pParse->nTab" identifier -> field_identifier)) ;) (expression_statement "pParse->nTab = local_c0 + 2;" (assignment_expression "pParse->nTab = local_c0 + 2" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "local_c0 + 2" identifier + number_literal)) ;) (expression_statement "iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,100,local_c0,0,0)" identifier (argument_list "(local_c8,100,local_c0,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal )))) ;) (expression_statement "p->addrOpenEphm[0] = iVar22;" (assignment_expression "p->addrOpenEphm[0] = iVar22" (subscript_expression "p->addrOpenEphm[0]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "pSVar34 = p;" (assignment_expression "pSVar34 = p" identifier = identifier) ;) (do_statement "do {\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            } while (pSVar34 != (Select *)0x0);" do (compound_statement "{\n              pSVar36 = pSVar34;\n              pSVar34 = pSVar36->pNext;\n            }" { (expression_statement "pSVar36 = pSVar34;" (assignment_expression "pSVar36 = pSVar34" identifier = identifier) ;) (expression_statement "pSVar34 = pSVar36->pNext;" (assignment_expression "pSVar34 = pSVar36->pNext" identifier = (field_expression "pSVar36->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar34 != (Select *)0x0)" ( (binary_expression "pSVar34 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar1 = &pSVar36->selFlags;" (assignment_expression "puVar1 = &pSVar36->selFlags" identifier = (pointer_expression "&pSVar36->selFlags" & (field_expression "pSVar36->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 = local_c0;" (assignment_expression "local_38 = local_c0" identifier = identifier) ;) (expression_statement "local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit);" (assignment_expression "local_d0 = (Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit)" identifier = (cast_expression "(Select *)sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Select(pParse,pSVar37,(SelectDest *)&nLimit)" identifier (argument_list "(pParse,pSVar37,(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              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\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              uVar13 = local_c0 + 1;\n              iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);\n              uVar2 = p->op;\n              pEVar15 = p->pLimit;\n              p->addrOpenEphm[1] = iVar22;\n              p->pPrior = (Select *)0x0;\n              p->pLimit = (Expr *)0x0;\n              pcVar27 = "EXCEPT";\n              if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }\n              local_38 = uVar13;\n              sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);\n              local_d0 = (Select *)sqlite3Select(pParse,p,(SelectDest *)&nLimit);\n              local_c4 = (Vdbe *)p->pPrior;\n              p->pPrior = pSVar37;\n              if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }\n              if (p->pLimit != (Expr *)0x0) {\n                sqlite3ExprDeleteNN(psVar3,p->pLimit);\n              }\n              p->pLimit = pEVar15;\n              if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }" { (expression_statement "uVar13 = local_c0 + 1;" (assignment_expression "uVar13 = local_c0 + 1" identifier = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (expression_statement "iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,100,uVar13,0,0)" identifier (argument_list "(local_c8,100,uVar13,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal )))) ;) (expression_statement "uVar2 = p->op;" (assignment_expression "uVar2 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (expression_statement "pEVar15 = p->pLimit;" (assignment_expression "pEVar15 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "p->addrOpenEphm[1] = iVar22;" (assignment_expression "p->addrOpenEphm[1] = iVar22" (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 "pcVar27 = "EXCEPT";" (assignment_expression "pcVar27 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) (if_statement "if ((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)) {\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }" if (parenthesized_expression "((uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87))" ( (binary_expression "(uVar2 != 0x86) && (pcVar27 = "INTERSECT", uVar2 != 0x87)" (parenthesized_expression "(uVar2 != 0x86)" ( (binary_expression "uVar2 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(pcVar27 = "INTERSECT", uVar2 != 0x87)" ( (comma_expression "pcVar27 = "INTERSECT", uVar2 != 0x87" (assignment_expression "pcVar27 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) , (binary_expression "uVar2 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n                pcVar27 = "UNION ALL";\n                if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }\n              }" { (expression_statement "pcVar27 = "UNION ALL";" (assignment_expression "pcVar27 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) (if_statement "if (uVar2 != 0x85) {\n                  pcVar27 = "UNION";\n                }" if (parenthesized_expression "(uVar2 != 0x85)" ( (binary_expression "uVar2 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  pcVar27 = "UNION";\n                }" { (expression_statement "pcVar27 = "UNION";" (assignment_expression "pcVar27 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) })) })) (expression_statement "local_38 = uVar13;" (assignment_expression "local_38 = uVar13" identifier = identifier) ;) (expression_statement "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27)" identifier (argument_list "(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27)" ( 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_c4 = (Vdbe *)p->pPrior;" (assignment_expression "local_c4 = (Vdbe *)p->pPrior" identifier = (cast_expression "(Vdbe *)p->pPrior" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p->pPrior" identifier -> field_identifier))) ;) (expression_statement "p->pPrior = pSVar37;" (assignment_expression "p->pPrior = pSVar37" (field_expression "p->pPrior" identifier -> field_identifier) = identifier) ;) (if_statement "if (pSVar37->nSelectRow < p->nSelectRow) {\n                p->nSelectRow = pSVar37->nSelectRow;\n              }" if (parenthesized_expression "(pSVar37->nSelectRow < p->nSelectRow)" ( (binary_expression "pSVar37->nSelectRow < p->nSelectRow" (field_expression "pSVar37->nSelectRow" identifier -> field_identifier) < (field_expression "p->nSelectRow" identifier -> field_identifier)) )) (compound_statement "{\n                p->nSelectRow = pSVar37->nSelectRow;\n              }" { (expression_statement "p->nSelectRow = pSVar37->nSelectRow;" (assignment_expression "p->nSelectRow = pSVar37->nSelectRow" (field_expression "p->nSelectRow" identifier -> field_identifier) = (field_expression "pSVar37->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 = pEVar15;" (assignment_expression "p->pLimit = pEVar15" (field_expression "p->pLimit" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_d0 == (Select *)0x0) {\n                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\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                pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -2);\n                pParse->nLabel = (int)pSVar39;\n                computeLimitRegisters(pParse,p,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);\n                if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }\n                iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);\n                iVar12 = 0;\n                pDest_00 = pSVar38;\n                sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);\n                if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);\n                sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);\n                sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);\n                sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);\n                sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);\n                goto LAB_00083517;\n              }" { (expression_statement "pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);" (assignment_expression "pDVar31 = (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 "pSVar39 = (SortCtx *)(pParse->nLabel + -2);" (assignment_expression "pSVar39 = (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)pSVar39;" (assignment_expression "pParse->nLabel = (int)pSVar39" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "computeLimitRegisters(pParse,p,(int)pDVar31);" (call_expression "computeLimitRegisters(pParse,p,(int)pDVar31)" identifier (argument_list "(pParse,p,(int)pDVar31)" ( identifier , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x25,local_c0,(int)pDVar31,0)" identifier (argument_list "(local_c8,0x25,local_c0,(int)pDVar31,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (if_statement "if (pParse->nTempReg == '\0') {\n                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }\n                else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\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                  pSVar38 = (SelectDest *)(pParse->nMem + 1);\n                  pParse->nMem = (int)pSVar38;\n                  pPVar41 = pParse;\n                }" { (expression_statement "pSVar38 = (SelectDest *)(pParse->nMem + 1);" (assignment_expression "pSVar38 = (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)pSVar38;" (assignment_expression "pParse->nMem = (int)pSVar38" (field_expression "pParse->nMem" identifier -> field_identifier) = (cast_expression "(int)pSVar38" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pPVar41 = pParse;" (assignment_expression "pPVar41 = pParse" identifier = identifier) ;) }) (else_clause "else {\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }" else (compound_statement "{\n                  bVar8 = pParse->nTempReg - 1;\n                  pParse->nTempReg = bVar8;\n                  pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];\n                  pPVar41 = extraout_ECX_00;\n                }" { (expression_statement "bVar8 = pParse->nTempReg - 1;" (assignment_expression "bVar8 = pParse->nTempReg - 1" identifier = (binary_expression "pParse->nTempReg - 1" (field_expression "pParse->nTempReg" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pParse->nTempReg = bVar8;" (assignment_expression "pParse->nTempReg = bVar8" (field_expression "pParse->nTempReg" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar38 = (SelectDest *)pParse->aTempReg[bVar8];" (assignment_expression "pSVar38 = (SelectDest *)pParse->aTempReg[bVar8]" identifier = (cast_expression "(SelectDest *)pParse->aTempReg[bVar8]" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pParse->aTempReg[bVar8]" (field_expression "pParse->aTempReg" identifier -> field_identifier) [ identifier ]))) ;) (expression_statement "pPVar41 = extraout_ECX_00;" (assignment_expression "pPVar41 = extraout_ECX_00" identifier = identifier) ;) }))) (expression_statement "iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c8,0x7e,local_c0,(int)pSVar38,0)" identifier (argument_list "(local_c8,0x7e,local_c0,(int)pSVar38,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar38" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal )))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "pDest_00 = pSVar38;" (assignment_expression "pDest_00 = pSVar38" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0);" (call_expression "sqlite3VdbeAddOp4Int(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0)" identifier (argument_list "(local_c8,0x1d,uVar13,(int)pSVar39,(int)pSVar38,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pSVar38" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (if_statement "if (pSVar38 != (SelectDest *)0x0) {\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }" if (parenthesized_expression "(pSVar38 != (SelectDest *)0x0)" ( (binary_expression "pSVar38 != (SelectDest *)0x0" identifier != (cast_expression "(SelectDest *)0x0" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pPVar41 = (Parse *)0x834aa;\n                  sqlite3ReleaseTempReg(pParse,(int)pSVar38);\n                }" { (expression_statement "pPVar41 = (Parse *)0x834aa;" (assignment_expression "pPVar41 = (Parse *)0x834aa" identifier = (cast_expression "(Parse *)0x834aa" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ReleaseTempReg(pParse,(int)pSVar38);" (call_expression "sqlite3ReleaseTempReg(pParse,(int)pSVar38)" identifier (argument_list "(pParse,(int)pSVar38)" ( identifier , (cast_expression "(int)pSVar38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,\n                                iVar12,(int)pPVar41)" ( (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 , (cast_expression "(int)pPVar41" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pSVar39);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pSVar39)" identifier (argument_list "(local_c8,(int)pSVar39)" ( identifier , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,5,local_c0,iVar22,0)" identifier (argument_list "(local_c8,5,local_c0,iVar22,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c8,(int)pDVar31);" (call_expression "sqlite3VdbeResolveLabel(local_c8,(int)pDVar31)" identifier (argument_list "(local_c8,(int)pDVar31)" ( identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0);" (call_expression "sqlite3VdbeAddOp3(local_c8,0x74,uVar13,0,0)" identifier (argument_list "(local_c8,0x74,uVar13,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (goto_statement "goto LAB_00083517;" goto statement_identifier ;) })) (goto_statement "goto LAB_00082ed0;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00082b00:\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_00081db1;" goto statement_identifier ;) })) (expression_statement "pSVar35 = p->pSrc;" (assignment_expression "pSVar35 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "local_c0 = p->pEList->nExpr;" (assignment_expression "local_c0 = p->pEList->nExpr" identifier = (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_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }\n        else {\nLAB_00082701:\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_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);\n          if (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }\n        }" { (labeled_statement "LAB_000827ee:\n          iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);" statement_identifier : (expression_statement "iVar22 = sqlite3AuthCheck((Parse *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,\n                                    (char *)in_stack_ffffff24);" (assignment_expression "iVar22 = 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 (iVar22 == 0) {\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (compound_statement "{\n            pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);\n            pParse->nLabel = (int)pDVar31;\n            p->nSelectRow = 0x140;\n            computeLimitRegisters(pParse,p,(int)pDVar31);\n            pEVar15 = p->pLimit;\n            iVar22 = pSVar35->nSrc;\n            p->pLimit = (Expr *)0x0;\n            iVar12 = p->iLimit;\n            p->iLimit = 0;\n            iVar14 = p->iOffset;\n            p->iOffset = 0;\n            pEVar16 = p->pOrderBy;\n            if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }\n            uVar13 = pParse->nTab;\n            local_bc = uVar13 + 1;\n            pParse->nTab = local_bc;\n            iVar22 = pParse->nMem + 1;\n            local_38 = uVar13;\n            if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }\n            if (p->pOrderBy != (ExprList *)0x0) {\n              exprListDeleteNN(pParse->db,p->pOrderBy);\n            }\n            p->pOrderBy = pEVar16;\n            p->pLimit = pEVar15;\n          }" { (expression_statement "pDVar31 = (DistinctCtx *)(pParse->nLabel + -1);" (assignment_expression "pDVar31 = (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)pDVar31;" (assignment_expression "pParse->nLabel = (int)pDVar31" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pDVar31" ( (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)pDVar31);" (call_expression "computeLimitRegisters(pParse,p,(int)pDVar31)" identifier (argument_list "(pParse,p,(int)pDVar31)" ( identifier , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "pEVar15 = p->pLimit;" (assignment_expression "pEVar15 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (expression_statement "iVar22 = pSVar35->nSrc;" (assignment_expression "iVar22 = pSVar35->nSrc" identifier = (field_expression "pSVar35->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 "iVar12 = p->iLimit;" (assignment_expression "iVar12 = 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 "pEVar16 = p->pOrderBy;" (assignment_expression "pEVar16 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) ;) (if_statement "if (iVar22 < 1) {\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }\n            else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }" if (parenthesized_expression "(iVar22 < 1)" ( (binary_expression "iVar22 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00082895:\n              local_b4 = (ExprList *)0x0;\n            }" { (labeled_statement "LAB_00082895:\n              local_b4 = (ExprList *)0x0;" statement_identifier : (expression_statement "local_b4 = (ExprList *)0x0;" (assignment_expression "local_b4 = (ExprList *)0x0" identifier = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }" else (compound_statement "{\n              bVar8 = pSVar35->a[0].fg.field_0x1;\n              iVar23 = 0;\n              while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }\n              local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;\n            }" { (expression_statement "bVar8 = pSVar35->a[0].fg.field_0x1;" (assignment_expression "bVar8 = pSVar35->a[0].fg.field_0x1" identifier = (field_expression "pSVar35->a[0].fg.field_0x1" (field_expression "pSVar35->a[0].fg" (subscript_expression "pSVar35->a[0]" (field_expression "pSVar35->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier)) ;) (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (while_statement "while ((bVar8 & 0x20) == 0) {\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }" while (parenthesized_expression "((bVar8 & 0x20) == 0)" ( (binary_expression "(bVar8 & 0x20) == 0" (parenthesized_expression "(bVar8 & 0x20)" ( (binary_expression "bVar8 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if (iVar23 + 1 == iVar22) goto LAB_00082895;\n                bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);\n                iVar23 = iVar23 + 1;\n              }" { (if_statement "if (iVar23 + 1 == iVar22) goto LAB_00082895;" if (parenthesized_expression "(iVar23 + 1 == iVar22)" ( (binary_expression "iVar23 + 1 == iVar22" (binary_expression "iVar23 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00082895;" goto statement_identifier ;)) (expression_statement "bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1);" (assignment_expression "bVar8 = *(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1)" identifier = (pointer_expression "*(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1)" * (cast_expression "(byte *)((int)&pSVar35[1].a[iVar23].regReturn + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSVar35[1].a[iVar23].regReturn + 1)" ( (binary_expression "(int)&pSVar35[1].a[iVar23].regReturn + 1" (cast_expression "(int)&pSVar35[1].a[iVar23].regReturn" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar35[1].a[iVar23].regReturn" & (field_expression "pSVar35[1].a[iVar23].regReturn" (subscript_expression "pSVar35[1].a[iVar23]" (field_expression "pSVar35[1].a" (subscript_expression "pSVar35[1]" identifier [ number_literal ]) . field_identifier) [ identifier ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar23 = iVar23 + 1;" (assignment_expression "iVar23 = iVar23 + 1" identifier = (binary_expression "iVar23 + 1" identifier + number_literal)) ;) })) (expression_statement "local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor;" (assignment_expression "local_b4 = (ExprList *)pSVar35->a[iVar23].iCursor" identifier = (cast_expression "(ExprList *)pSVar35->a[iVar23].iCursor" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSVar35->a[iVar23].iCursor" (subscript_expression "pSVar35->a[iVar23]" (field_expression "pSVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) }))) (expression_statement "uVar13 = pParse->nTab;" (assignment_expression "uVar13 = pParse->nTab" identifier = (field_expression "pParse->nTab" identifier -> field_identifier)) ;) (expression_statement "local_bc = uVar13 + 1;" (assignment_expression "local_bc = uVar13 + 1" identifier = (binary_expression "uVar13 + 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 "iVar22 = pParse->nMem + 1;" (assignment_expression "iVar22 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "local_38 = uVar13;" (assignment_expression "local_38 = uVar13" identifier = identifier) ;) (if_statement "if (p->op == 0x84) {\n              if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }\n            else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\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 (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;\n              local_2c._0_4_ = 0;\n              pParse->nMem = iVar22;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\nLAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP");\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }\n            }" { (if_statement "if (pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\n              }" if (parenthesized_expression "(pEVar16 != (ExprList *)0x0)" ( (binary_expression "pEVar16 != (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 = uVar13 + 2;\n                local_2c._0_4_ = 0;\n                pParse->nMem = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                iVar23 = extraout_ECX_01;\n                goto LAB_00082930;\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 = uVar13 + 2;" (assignment_expression "pParse->nTab = uVar13 + 2" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "uVar13 + 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 = iVar22;" (assignment_expression "pParse->nMem = iVar22" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0)" identifier (argument_list "(local_c4,0x72,(int)local_b4,iVar22,local_c0)" ( identifier , number_literal , (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "iVar23 = extraout_ECX_01;" (assignment_expression "iVar23 = extraout_ECX_01" identifier = identifier) ;) (goto_statement "goto LAB_00082930;" 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 = uVar13 + 2;" (assignment_expression "pParse->nTab = uVar13 + 2" (field_expression "pParse->nTab" identifier -> field_identifier) = (binary_expression "uVar13 + 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 = iVar22;" (assignment_expression "pParse->nMem = iVar22" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0)" identifier (argument_list "(local_c4,0x72,(int)local_b4,iVar22,local_c0)" ( identifier , number_literal , (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0)" identifier (argument_list "(local_c4,100,uVar13,local_c0,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (labeled_statement "LAB_00082986:\n              if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }" statement_identifier : (if_statement "if (local_bc != 0) {\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }" if (parenthesized_expression "(local_bc != 0)" ( (binary_expression "local_bc != 0" identifier != number_literal) )) (compound_statement "{\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);\n                p->selFlags = p->selFlags | 0x20;\n                p->addrOpenEphm[0] = iVar23;\n              }" { (expression_statement "iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0);" (assignment_expression "iVar23 = sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,100,local_bc,0,0)" identifier (argument_list "(local_c4,100,local_bc,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal )))) ;) (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] = iVar23;" (assignment_expression "p->addrOpenEphm[0] = iVar23" (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 "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 "iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);" (assignment_expression "iVar23 = 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 (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\n                if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);\nLAB_00083747:\n                local_ac = (SelectDest *)&nLimit;\n                pSVar38 = (SelectDest *)0x0;\n                iVar23 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);\n                pSVar39 = (SortCtx *)(pParse->nLabel + -1);\n                pParse->nLabel = (int)pSVar39;\n                if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }\n                selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);\n                if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }\n                pVVar28 = local_c4;\n                sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);\n                if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }\n                sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);\n                sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);\n              }" { (expression_statement "local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);" (assignment_expression "local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0)" identifier (argument_list "(local_c4,0x25,uVar13,(int)pDVar31,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal )))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0)" identifier (argument_list "(local_c4,0x80,(int)local_b4,0,0)" ( identifier , number_literal , (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal ))) ;) (if_statement "if (pEVar16 == (ExprList *)0x0) goto LAB_00083923;" if (parenthesized_expression "(pEVar16 == (ExprList *)0x0)" ( (binary_expression "pEVar16 == (ExprList *)0x0" identifier == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00083923;" goto statement_identifier ;)) (expression_statement "iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22)" identifier (argument_list "(local_c4,0x59,uVar13,pEVar16->nExpr + 1,iVar22)" ( identifier , number_literal , identifier , (binary_expression "pEVar16->nExpr + 1" (field_expression "pEVar16->nExpr" identifier -> field_identifier) + number_literal) , identifier )))) ;) (labeled_statement "LAB_00083747:\n                local_ac = (SelectDest *)&nLimit;" statement_identifier : (expression_statement "local_ac = (SelectDest *)&nLimit;" (assignment_expression "local_ac = (SelectDest *)&nLimit" identifier = (cast_expression "(SelectDest *)&nLimit" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nLimit" & identifier))) ;)) (expression_statement "pSVar38 = (SelectDest *)0x0;" (assignment_expression "pSVar38 = (SelectDest *)0x0" identifier = (cast_expression "(SelectDest *)0x0" ( (type_descriptor "SelectDest *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar23 = iVar22;" (assignment_expression "iVar23 = iVar22" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x7a,uVar13,0,0)" identifier (argument_list "(local_c4,0x7a,uVar13,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal ))) ;) (expression_statement "pSVar39 = (SortCtx *)(pParse->nLabel + -1);" (assignment_expression "pSVar39 = (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)pSVar39;" (assignment_expression "pParse->nLabel = (int)pSVar39" (field_expression "pParse->nLabel" identifier -> field_identifier) = (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar14) {\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n                  iVar23 = 0x83784;\n                  codeOffset(local_c4,iVar14,(int)pSVar39);\n                }" { (expression_statement "iVar23 = 0x83784;" (assignment_expression "iVar23 = 0x83784" identifier = number_literal) ;) (expression_statement "codeOffset(local_c4,iVar14,(int)pSVar39);" (call_expression "codeOffset(local_c4,iVar14,(int)pSVar39)" identifier (argument_list "(local_c4,iVar14,(int)pSVar39)" ( identifier , identifier , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,pSVar39,pDVar31,pSVar38,iVar22\n                                ,iVar23)" ( (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 ))) ;) (if_statement "if (iVar12 != 0) {\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n                  sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);\n                }" { (expression_statement "sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x3b,iVar12,(int)pDVar31,0)" identifier (argument_list "(local_c4,0x3b,iVar12,(int)pDVar31,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) })) (expression_statement "pVVar28 = local_c4;" (assignment_expression "pVVar28 = local_c4" identifier = identifier) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c4,(int)pSVar39);" (call_expression "sqlite3VdbeResolveLabel(local_c4,(int)pSVar39)" identifier (argument_list "(local_c4,(int)pSVar39)" ( identifier , (cast_expression "(int)pSVar39" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if ((p->selFlags & 8) == 0) {\n                  p->pPrior = (Select *)0x0;\n                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\n                  p->pPrior = local_d0;\n                }\n                else {\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\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                  sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);\n                  sqlite3Select(pParse,p,local_ac);\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 "sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"RECURSIVE STEP",pVVar28)" identifier (argument_list "(pParse,'\x01',"RECURSIVE STEP",pVVar28)" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""RECURSIVE STEP"" " string_content ") , identifier ))) ;) (expression_statement "sqlite3Select(pParse,p,local_ac);" (call_expression "sqlite3Select(pParse,p,local_ac)" identifier (argument_list "(pParse,p,local_ac)" ( 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                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }" else (compound_statement "{\n                  sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );\n                }" { (expression_statement "sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 );" (call_expression "sqlite3ErrorMsg(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 )" identifier (argument_list "(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28\n                                 )" ( identifier , (string_literal ""recursive aggregate queries not supported"" " string_content ") , identifier , identifier ))) ;) }))) (expression_statement "sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0xb,0,local_c0,0)" identifier (argument_list "(local_c4,0xb,0,local_c0,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "sqlite3VdbeResolveLabel(local_c4,(int)pDVar31);" (call_expression "sqlite3VdbeResolveLabel(local_c4,(int)pDVar31)" identifier (argument_list "(local_c4,(int)pDVar31)" ( identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) }) (else_clause "else {\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }" else (compound_statement "{\n              if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;\n              pPVar41 = pParse;\n              sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n              sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);\n              p->pOrderBy = (ExprList *)0x0;\n              local_d0->pNext = (Select *)0x0;\n              sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);\n              iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);\n              local_d0->pNext = p;\n              if (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }\n            }" { (if_statement "if (pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\n              }" if (parenthesized_expression "(pEVar16 != (ExprList *)0x0)" ( (binary_expression "pEVar16 != (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 = iVar22;\n                sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);\n                local_bc = 0;\n                iVar23 = extraout_ECX;\nLAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);\n                iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);\n                sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);\n                local_2c._8_4_ = pEVar16;\n                goto LAB_00082986;\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 = iVar22;" (assignment_expression "pParse->nMem = iVar22" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0)" identifier (argument_list "(local_c4,0x72,(int)local_b4,iVar22,local_c0)" ( identifier , number_literal , (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "iVar23 = extraout_ECX;" (assignment_expression "iVar23 = extraout_ECX" identifier = identifier) ;) (labeled_statement "LAB_00082930:\n                pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);" statement_identifier : (expression_statement "pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23);" (assignment_expression "pKVar26 = multiSelectOrderByKeyInfo(pParse,p,iVar23)" identifier = (call_expression "multiSelectOrderByKeyInfo(pParse,p,iVar23)" identifier (argument_list "(pParse,p,iVar23)" ( identifier , identifier , identifier )))) ;)) (expression_statement "iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0);" (assignment_expression "iVar23 = sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,100,uVar13,pEVar16->nExpr + 2,0)" identifier (argument_list "(local_c4,100,uVar13,pEVar16->nExpr + 2,0)" ( identifier , number_literal , identifier , (binary_expression "pEVar16->nExpr + 2" (field_expression "pEVar16->nExpr" identifier -> field_identifier) + number_literal) , number_literal )))) ;) (expression_statement "sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9);" (call_expression "sqlite3VdbeChangeP4(local_c4,iVar23,(char *)pKVar26,-9)" identifier (argument_list "(local_c4,iVar23,(char *)pKVar26,-9)" ( identifier , identifier , (cast_expression "(char *)pKVar26" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "local_2c._8_4_ = pEVar16;" (assignment_expression "local_2c._8_4_ = pEVar16" (field_expression "local_2c._8_4_" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_00082986;" 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 = iVar22;" (assignment_expression "pParse->nMem = iVar22" (field_expression "pParse->nMem" identifier -> field_identifier) = identifier) ;) (expression_statement "pPVar41 = pParse;" (assignment_expression "pPVar41 = pParse" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x72,(int)local_b4,iVar22,local_c0)" identifier (argument_list "(local_c4,0x72,(int)local_b4,iVar22,local_c0)" ( identifier , number_literal , (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,100,uVar13,local_c0,0)" identifier (argument_list "(local_c4,100,uVar13,local_c0,0)" ( identifier , number_literal , identifier , identifier , number_literal ))) ;) (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 "sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41);" (call_expression "sqlite3VdbeExplain(pParse,'\x01',"SETUP",pPVar41)" identifier (argument_list "(pParse,'\x01',"SETUP",pPVar41)" ( identifier , (char_literal "'\x01'" ' escape_sequence ') , (string_literal ""SETUP"" " string_content ") , identifier ))) ;) (expression_statement "iVar23 = sqlite3Select(pParse,local_d0,(SelectDest *)&nLimit);" (assignment_expression "iVar23 = 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 (iVar23 == 0) {\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }" if (parenthesized_expression "(iVar23 == 0)" ( (binary_expression "iVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);\n                sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);\nLAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);\n                goto LAB_00083747;\n              }" { (expression_statement "local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0);" (assignment_expression "local_c0 = sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,0x25,uVar13,(int)pDVar31,0)" identifier (argument_list "(local_c4,0x25,uVar13,(int)pDVar31,0)" ( identifier , number_literal , identifier , (cast_expression "(int)pDVar31" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal )))) ;) (expression_statement "sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0);" (call_expression "sqlite3VdbeAddOp3(local_c4,0x80,(int)local_b4,0,0)" identifier (argument_list "(local_c4,0x80,(int)local_b4,0,0)" ( identifier , number_literal , (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , number_literal ))) ;) (labeled_statement "LAB_00083923:\n                iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);" statement_identifier : (expression_statement "iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0)" identifier = (call_expression "sqlite3VdbeAddOp3(local_c4,0x7e,uVar13,iVar22,0)" identifier (argument_list "(local_c4,0x7e,uVar13,iVar22,0)" ( identifier , number_literal , identifier , identifier , number_literal )))) ;)) (goto_statement "goto LAB_00083747;" 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 = pEVar16;" (assignment_expression "p->pOrderBy = pEVar16" (field_expression "p->pOrderBy" identifier -> field_identifier) = identifier) ;) (expression_statement "p->pLimit = pEVar15;" (assignment_expression "p->pLimit = pEVar15" (field_expression "p->pLimit" identifier -> field_identifier) = identifier) ;) })) }) (else_clause "else {\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }" else (compound_statement "{\nLAB_00082701:\n          sqlite3ErrorMsg(pParse,"cannot use window functions in recursive queries");\n        }" { (labeled_statement "LAB_00082701:\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_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\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_c4 = (Vdbe *)0x0;\n          local_d0 = (Select *)0x0;\nLAB_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }\nLAB_0008273c:\n          pDest->iSdst = dest.iSdst;\n          pDest->nSdst = dest.nSdst;\n          if (local_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\n          }\n          goto LAB_00081db1;\n        }" { (expression_statement "local_c4 = (Vdbe *)0x0;" (assignment_expression "local_c4 = (Vdbe *)0x0" identifier = (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" 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_00082732:\n          if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }\n          }" statement_identifier : (if_statement "if ((p->selFlags & 0x20) != 0) {\n            puVar4 = (undefined1 *)p->pEList->nExpr;\n            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\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            pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);\n            if (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\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 "pKVar26 = sqlite3KeyInfoAlloc(psVar3,(int)puVar4,1);" (assignment_expression "pKVar26 = 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 (pKVar26 == (KeyInfo *)0x0) {\n              local_d0 = (Select *)0x7;\n            }\n            else {\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }" if (parenthesized_expression "(pKVar26 == (KeyInfo *)0x0)" ( (binary_expression "pKVar26 == (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                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }" else (compound_statement "{\n              if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\n              }\n              do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);\n              uVar21 = pKVar26->nRef - 1;\n              pKVar26->nRef = uVar21;\n              if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }\n            }" { (if_statement "if (0 < (int)puVar4) {\n                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);\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                pSVar37 = (Select *)0x0;\n                do {\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\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                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                } while ((Select *)puVar4 != pSVar37);" do (compound_statement "{\n                  pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);\n                  pKVar26->aColl[(int)pSVar37] = pCVar17;\n                  if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }\n                  pSVar37 = (Select *)&pSVar37->field_0x1;\n                }" { (expression_statement "pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37);" (assignment_expression "pCVar17 = multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37)" identifier = (call_expression "multiSelectCollSeq(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37)" identifier (argument_list "(pParse,(Select *)&p->pEList,(int)p->pPrior,pSVar37)" ( 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 "pKVar26->aColl[(int)pSVar37] = pCVar17;" (assignment_expression "pKVar26->aColl[(int)pSVar37] = pCVar17" (subscript_expression "pKVar26->aColl[(int)pSVar37]" (field_expression "pKVar26->aColl" identifier -> field_identifier) [ (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) (if_statement "if (pCVar17 == (CollSeq *)0x0) {\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }" if (parenthesized_expression "(pCVar17 == (CollSeq *)0x0)" ( (binary_expression "pCVar17 == (CollSeq *)0x0" identifier == (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;\n                  }" { (expression_statement "pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl;" (assignment_expression "pKVar26->aColl[(int)pSVar37] = psVar3->pDfltColl" (subscript_expression "pKVar26->aColl[(int)pSVar37]" (field_expression "pKVar26->aColl" identifier -> field_identifier) [ (cast_expression "(int)pSVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (field_expression "psVar3->pDfltColl" identifier -> field_identifier)) ;) })) (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) )) ;) })) (do_statement "do {\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              } while (p != (Select *)0x0);" do (compound_statement "{\n                iVar22 = 0;\n                while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }\n                p = p->pPrior;\n              }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (while_statement "while (iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12) {\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }" while (parenthesized_expression "(iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12)" ( (comma_expression "iVar12 = p->addrOpenEphm[iVar22], -1 < iVar12" (assignment_expression "iVar12 = p->addrOpenEphm[iVar22]" identifier = (subscript_expression "p->addrOpenEphm[iVar22]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ identifier ])) , (binary_expression "-1 < iVar12" number_literal < identifier)) )) (compound_statement "{\n                  pOVar25 = (Op *)&dummy_22674;\n                  if (local_c8->db->mallocFailed == '\0') {\n                    pOVar25 = local_c8->aOp + iVar12;\n                  }\n                  pOVar25->p2 = (int)puVar4;\n                  pKVar26->nRef = pKVar26->nRef + 1;\n                  sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);\n                  p->addrOpenEphm[iVar22] = -1;\n                  if (iVar22 == 1) break;\n                  iVar22 = 1;\n                }" { (expression_statement "pOVar25 = (Op *)&dummy_22674;" (assignment_expression "pOVar25 = (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                    pOVar25 = local_c8->aOp + iVar12;\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                    pOVar25 = local_c8->aOp + iVar12;\n                  }" { (expression_statement "pOVar25 = local_c8->aOp + iVar12;" (assignment_expression "pOVar25 = local_c8->aOp + iVar12" identifier = (binary_expression "local_c8->aOp + iVar12" (field_expression "local_c8->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar25->p2 = (int)puVar4;" (assignment_expression "pOVar25->p2 = (int)puVar4" (field_expression "pOVar25->p2" identifier -> field_identifier) = (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pKVar26->nRef = pKVar26->nRef + 1;" (assignment_expression "pKVar26->nRef = pKVar26->nRef + 1" (field_expression "pKVar26->nRef" identifier -> field_identifier) = (binary_expression "pKVar26->nRef + 1" (field_expression "pKVar26->nRef" identifier -> field_identifier) + number_literal)) ;) (expression_statement "sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9);" (call_expression "sqlite3VdbeChangeP4(local_c8,iVar12,(char *)pKVar26,-9)" identifier (argument_list "(local_c8,iVar12,(char *)pKVar26,-9)" ( identifier , identifier , (cast_expression "(char *)pKVar26" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "p->addrOpenEphm[iVar22] = -1;" (assignment_expression "p->addrOpenEphm[iVar22] = -1" (subscript_expression "p->addrOpenEphm[iVar22]" (field_expression "p->addrOpenEphm" identifier -> field_identifier) [ identifier ]) = number_literal) ;) (if_statement "if (iVar22 == 1) break;" if (parenthesized_expression "(iVar22 == 1)" ( (binary_expression "iVar22 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar22 = 1;" (assignment_expression "iVar22 = 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 "uVar21 = pKVar26->nRef - 1;" (assignment_expression "uVar21 = pKVar26->nRef - 1" identifier = (binary_expression "pKVar26->nRef - 1" (field_expression "pKVar26->nRef" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pKVar26->nRef = uVar21;" (assignment_expression "pKVar26->nRef = uVar21" (field_expression "pKVar26->nRef" identifier -> field_identifier) = identifier) ;) (if_statement "if (uVar21 == 0) {\n                sqlite3KeyInfoUnref(pKVar26);\n              }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n                sqlite3KeyInfoUnref(pKVar26);\n              }" { (expression_statement "sqlite3KeyInfoUnref(pKVar26);" (call_expression "sqlite3KeyInfoUnref(pKVar26)" identifier (argument_list "(pKVar26)" ( identifier ))) ;) })) }))) }))) (labeled_statement "LAB_0008273c:\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_c4 != (Vdbe *)0x0) {\n            clearSelect(psVar3,(Select *)local_c4,1);\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            clearSelect(psVar3,(Select *)local_c4,1);\n          }" { (expression_statement "clearSelect(psVar3,(Select *)local_c4,1);" (call_expression "clearSelect(psVar3,(Select *)local_c4,1)" identifier (argument_list "(psVar3,(Select *)local_c4,1)" ( identifier , (cast_expression "(Select *)local_c4" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) })) (goto_statement "goto LAB_00081db1;" goto statement_identifier ;) })) }) (else_clause "else {\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }" else (compound_statement "{\n        pEVar15 = p->pLimit;\n        if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pSVar34 = p->pPrior;\n        pSVar36 = p;\n        if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }\n        sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);\n        do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);\n      }" { (expression_statement "pEVar15 = p->pLimit;" (assignment_expression "pEVar15 = p->pLimit" identifier = (field_expression "p->pLimit" identifier -> field_identifier)) ;) (if_statement "if (p->pWin != (Window *)0x0) {\n          if ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\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 ((uVar13 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }" { (if_statement "if ((uVar13 & 0x2000) != 0) goto LAB_00082701;" if (parenthesized_expression "((uVar13 & 0x2000) != 0)" ( (binary_expression "(uVar13 & 0x2000) != 0" (parenthesized_expression "(uVar13 & 0x2000)" ( (binary_expression "uVar13 & 0x2000" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00082701;" goto statement_identifier ;)) (goto_statement "goto LAB_00081e83;" goto statement_identifier ;) })) (expression_statement "pSVar34 = p->pPrior;" (assignment_expression "pSVar34 = p->pPrior" identifier = (field_expression "p->pPrior" identifier -> field_identifier)) ;) (expression_statement "pSVar36 = p;" (assignment_expression "pSVar36 = p" identifier = identifier) ;) (if_statement "if (pSVar34 == (Select *)0x0) {\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }\n        else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }" if (parenthesized_expression "(pSVar34 == (Select *)0x0)" ( (binary_expression "pSVar34 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000830eb:\n          local_d0 = (Select *)0x1;\n          pcVar27 = "";\n        }" { (labeled_statement "LAB_000830eb:\n          local_d0 = (Select *)0x1;" statement_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)) ;)) (expression_statement "pcVar27 = "";" (assignment_expression "pcVar27 = """ identifier = (string_literal """" " ")) ;) }) (else_clause "else {\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }" else (compound_statement "{\n          local_d0 = (Select *)0x1;\n          pSVar6 = pSVar34;\n          do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);\n          pcVar27 = "S";\n          if (local_d0 == (Select *)0x1) goto LAB_000830eb;\n        }" { (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)) ;) (expression_statement "pSVar6 = pSVar34;" (assignment_expression "pSVar6 = pSVar34" identifier = identifier) ;) (do_statement "do {\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          } while (pSVar36->pPrior != (Select *)0x0);" do (compound_statement "{\n            pSVar36 = pSVar6;\n            local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));\n            if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }\n            pSVar6 = pSVar36->pPrior;\n          }" { (expression_statement "pSVar36 = pSVar6;" (assignment_expression "pSVar36 = pSVar6" identifier = identifier) ;) (expression_statement "local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0));" (assignment_expression "local_d0 = (Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0))" identifier = (cast_expression "(Select *)((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0))" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + (uint)(pEVar15 == (Expr *)0x0))" ( (binary_expression "(int)local_d0 + (uint)(pEVar15 == (Expr *)0x0)" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(pEVar15 == (Expr *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pEVar15 == (Expr *)0x0)" ( (binary_expression "pEVar15 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )))) ;) (if_statement "if (pSVar36->pWin != (Window *)0x0) {\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }" if (parenthesized_expression "(pSVar36->pWin != (Window *)0x0)" ( (binary_expression "pSVar36->pWin != (Window *)0x0" (field_expression "pSVar36->pWin" identifier -> field_identifier) != (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;\n              pSVar35 = p->pSrc;\n              local_c0 = p->pEList->nExpr;\n              local_c4 = pParse->pVdbe;\n              local_d0 = pSVar34;\n              goto LAB_000827ee;\n            }" { (if_statement "if ((uVar13 & 0x2000) == 0) goto LAB_00081e83;" if (parenthesized_expression "((uVar13 & 0x2000) == 0)" ( (binary_expression "(uVar13 & 0x2000) == 0" (parenthesized_expression "(uVar13 & 0x2000)" ( (binary_expression "uVar13 & 0x2000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00081e83;" goto statement_identifier ;)) (expression_statement "pSVar35 = p->pSrc;" (assignment_expression "pSVar35 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "local_c0 = p->pEList->nExpr;" (assignment_expression "local_c0 = p->pEList->nExpr" identifier = (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 = pSVar34;" (assignment_expression "local_d0 = pSVar34" identifier = identifier) ;) (goto_statement "goto LAB_000827ee;" goto statement_identifier ;) })) (expression_statement "pSVar6 = pSVar36->pPrior;" (assignment_expression "pSVar6 = pSVar36->pPrior" identifier = (field_expression "pSVar36->pPrior" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar36->pPrior != (Select *)0x0)" ( (binary_expression "pSVar36->pPrior != (Select *)0x0" (field_expression "pSVar36->pPrior" identifier -> field_identifier) != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pcVar27 = "S";" (assignment_expression "pcVar27 = "S"" identifier = (string_literal ""S"" " string_content ")) ;) (if_statement "if (local_d0 == (Select *)0x1) goto LAB_000830eb;" if (parenthesized_expression "(local_d0 == (Select *)0x1)" ( (binary_expression "local_d0 == (Select *)0x1" identifier == (cast_expression "(Select *)0x1" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000830eb;" goto statement_identifier ;)) }))) (expression_statement "sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27);" (call_expression "sqlite3VdbeExplain(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27)" identifier (argument_list "(pParse,'\0',"SCAN %d CONSTANT ROW%s",local_d0,pcVar27)" ( identifier , (char_literal "'\0'" ' escape_sequence ') , (string_literal ""SCAN %d CONSTANT ROW%s"" " string_content ") , identifier , identifier ))) ;) (do_statement "do {\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        } while (pSVar36 != (Select *)0x0);" do (compound_statement "{\n          selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);\n          if (pEVar15 != (Expr *)0x0) break;\n          pSVar36->nSelectRow = (LogEst)local_d0;\n          pSVar36 = pSVar36->pNext;\n        }" { (expression_statement "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);" (call_expression "selectInnerLoop((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20)" identifier (argument_list "((Parse *)0x0,(Select *)0x0,(int)&dest,(SortCtx *)0x1,(DistinctCtx *)0x1,\n                          in_stack_ffffff18,(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 *)0x1" ( (type_descriptor "SortCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(DistinctCtx *)0x1" ( (type_descriptor "DistinctCtx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , 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) ))) ;) (if_statement "if (pEVar15 != (Expr *)0x0) break;" if (parenthesized_expression "(pEVar15 != (Expr *)0x0)" ( (binary_expression "pEVar15 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pSVar36->nSelectRow = (LogEst)local_d0;" (assignment_expression "pSVar36->nSelectRow = (LogEst)local_d0" (field_expression "pSVar36->nSelectRow" identifier -> field_identifier) = (cast_expression "(LogEst)local_d0" ( (type_descriptor "LogEst" type_identifier) ) identifier)) ;) (expression_statement "pSVar36 = pSVar36->pNext;" (assignment_expression "pSVar36 = pSVar36->pNext" identifier = (field_expression "pSVar36->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar36 != (Select *)0x0)" ( (binary_expression "pSVar36 != (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)) ;) (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_00081db1;" goto statement_identifier ;) })) (expression_statement "uVar2 = p->op;" (assignment_expression "uVar2 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }" if (parenthesized_expression "(uVar2 == 0x86)" ( (binary_expression "uVar2 == 0x86" identifier == number_literal) )) (compound_statement "{\n      pcVar27 = "EXCEPT";\n    }" { (expression_statement "pcVar27 = "EXCEPT";" (assignment_expression "pcVar27 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) }) (else_clause "else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }" else (if_statement "if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }" if (parenthesized_expression "(uVar2 == 0x87)" ( (binary_expression "uVar2 == 0x87" identifier == number_literal) )) (compound_statement "{\n      pcVar27 = "INTERSECT";\n    }" { (expression_statement "pcVar27 = "INTERSECT";" (assignment_expression "pcVar27 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) ;) }) (else_clause "else {\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }" else (compound_statement "{\n      pcVar27 = "UNION";\n      if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }\n    }" { (expression_statement "pcVar27 = "UNION";" (assignment_expression "pcVar27 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) (if_statement "if (uVar2 == 0x85) {\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }" if (parenthesized_expression "(uVar2 == 0x85)" ( (binary_expression "uVar2 == 0x85" identifier == number_literal) )) (compound_statement "{\n        pcVar27 = "UNION ALL";\n        pcVar11 = "LIMIT";\n        goto LAB_00081d80;\n      }" { (expression_statement "pcVar27 = "UNION ALL";" (assignment_expression "pcVar27 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) (expression_statement "pcVar11 = "LIMIT";" (assignment_expression "pcVar11 = "LIMIT"" identifier = (string_literal ""LIMIT"" " string_content ")) ;) (goto_statement "goto LAB_00081d80;" goto statement_identifier ;) })) }))))) (expression_statement "pcVar11 = "LIMIT";" (assignment_expression "pcVar11 = "LIMIT"" identifier = (string_literal ""LIMIT"" " string_content ")) ;) }) (else_clause "else {\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }\n    pcVar11 = "ORDER BY";\n  }" else (compound_statement "{\n    uVar2 = p->op;\n    if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }\n    pcVar11 = "ORDER BY";\n  }" { (expression_statement "uVar2 = p->op;" (assignment_expression "uVar2 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == 0x86) {\n      pcVar27 = "EXCEPT";\n    }\n    else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }" if (parenthesized_expression "(uVar2 == 0x86)" ( (binary_expression "uVar2 == 0x86" identifier == number_literal) )) (compound_statement "{\n      pcVar27 = "EXCEPT";\n    }" { (expression_statement "pcVar27 = "EXCEPT";" (assignment_expression "pcVar27 = "EXCEPT"" identifier = (string_literal ""EXCEPT"" " string_content ")) ;) }) (else_clause "else if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }" else (if_statement "if (uVar2 == 0x87) {\n      pcVar27 = "INTERSECT";\n    }\n    else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }" if (parenthesized_expression "(uVar2 == 0x87)" ( (binary_expression "uVar2 == 0x87" identifier == number_literal) )) (compound_statement "{\n      pcVar27 = "INTERSECT";\n    }" { (expression_statement "pcVar27 = "INTERSECT";" (assignment_expression "pcVar27 = "INTERSECT"" identifier = (string_literal ""INTERSECT"" " string_content ")) ;) }) (else_clause "else {\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }" else (compound_statement "{\n      if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }\n      pcVar27 = "UNION ALL";\n    }" { (if_statement "if (uVar2 != 0x85) {\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }" if (parenthesized_expression "(uVar2 != 0x85)" ( (binary_expression "uVar2 != 0x85" identifier != number_literal) )) (compound_statement "{\n        pcVar27 = "UNION";\n        pcVar11 = "ORDER BY";\n        goto LAB_00081d80;\n      }" { (expression_statement "pcVar27 = "UNION";" (assignment_expression "pcVar27 = "UNION"" identifier = (string_literal ""UNION"" " string_content ")) ;) (expression_statement "pcVar11 = "ORDER BY";" (assignment_expression "pcVar11 = "ORDER BY"" identifier = (string_literal ""ORDER BY"" " string_content ")) ;) (goto_statement "goto LAB_00081d80;" goto statement_identifier ;) })) (expression_statement "pcVar27 = "UNION ALL";" (assignment_expression "pcVar27 = "UNION ALL"" identifier = (string_literal ""UNION ALL"" " string_content ")) ;) }))))) (expression_statement "pcVar11 = "ORDER BY";" (assignment_expression "pcVar11 = "ORDER BY"" identifier = (string_literal ""ORDER BY"" " string_content ")) ;) }))) (labeled_statement "LAB_00081d80:\n  sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);" (call_expression "sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",pcVar11,pcVar27)" identifier (argument_list "(pParse,"%s clause should come after %s not before",pcVar11,pcVar27)" ( 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_00081db1:\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_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000a9ea0();\n}\n\n" (function_definition "uint __regparm3 FUN_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000a9ea0();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00081ce0(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  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000a9ea0();\n}" { (declaration "ushort *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "short sVar7;" (sized_type_specifier "short" short) identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined2 uVar9;" type_identifier identifier ;) (declaration "short sVar10;" (sized_type_specifier "short" short) 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 "undefined4 uVar21;" type_identifier identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "short sVar23;" (sized_type_specifier "short" short) identifier ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "undefined4 extraout_ECX_00;" type_identifier identifier ;) (declaration "char *pcVar24;" primitive_type (pointer_declarator "*pcVar24" * identifier) ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "int *extraout_EDX_00;" primitive_type (pointer_declarator "*extraout_EDX_00" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "undefined8 uVar30;" type_identifier identifier ;) (declaration "undefined4 uVar31;" type_identifier identifier ;) (declaration "byte *local_d0;" type_identifier (pointer_declarator "*local_d0" * 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_b4;" primitive_type (pointer_declarator "*local_b4" * identifier) ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int *local_a4;" primitive_type (pointer_declarator "*local_a4" * 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_80;" 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 = 0x81ced;" (assignment_expression "uStack_14 = 0x81ced" identifier = number_literal) ;) (expression_statement "uVar30 = FUN_000a9503();" (assignment_expression "uVar30 = FUN_000a9503()" identifier = (call_expression "FUN_000a9503()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);" (assignment_expression "pcVar24 = (char *)((ulonglong)uVar30 >> 0x20)" identifier = (cast_expression "(char *)((ulonglong)uVar30 >> 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar30 >> 0x20)" ( (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar20 = (int *)uVar30;" (assignment_expression "piVar20 = (int *)uVar30" identifier = (cast_expression "(int *)uVar30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar18 = *(int *)(pcVar24 + 0x34);" (assignment_expression "iVar18 = *(int *)(pcVar24 + 0x34)" identifier = (pointer_expression "*(int *)(pcVar24 + 0x34)" * (cast_expression "(int *)(pcVar24 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar24 + 0x34)" ( (binary_expression "pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" if (parenthesized_expression "(*(int *)(iVar18 + 0x30) == 0)" ( (binary_expression "*(int *)(iVar18 + 0x30) == 0" (pointer_expression "*(int *)(iVar18 + 0x30)" * (cast_expression "(int *)(iVar18 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x30)" ( (binary_expression "iVar18 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }" { (if_statement "if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }" if (parenthesized_expression "(*(int *)(iVar18 + 0x3c) == 0)" ( (binary_expression "*(int *)(iVar18 + 0x3c) == 0" (pointer_expression "*(int *)(iVar18 + 0x3c)" * (cast_expression "(int *)(iVar18 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 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_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\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_000318c0();\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_000318c0();\n      }" { (expression_statement "local_c8 = (int *)FUN_000318c0();" (assignment_expression "local_c8 = (int *)FUN_000318c0()" identifier = (cast_expression "(int *)FUN_000318c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000318c0()" identifier (argument_list "()" ( ))))) ;) })) (if_statement "if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" { (expression_statement "FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);" (call_expression "FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0)" identifier (argument_list "(**(undefined4 **)(param_2 + 0x1c),0)" ( (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) ))))) , 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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }" { (if_statement "if ((uVar12 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\n        }" { (labeled_statement "LAB_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);" statement_identifier : (expression_statement "local_b4 = *(int **)(param_2 + 0x30);" (assignment_expression "local_b4 = *(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_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }" if (parenthesized_expression "(local_b4 != (int *)0x0)" ( (binary_expression "local_b4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\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 "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = 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 "iVar27 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar27 = *(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 "uVar12 = (uint)*param_2;" (assignment_expression "uVar12 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "local_b0 = *local_b4;" (assignment_expression "local_b0 = *local_b4" identifier = (pointer_expression "*local_b4" * identifier)) ;) (if_statement "if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }" if (parenthesized_expression "(((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c)))" ( (binary_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))" (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 "(0 < **(int **)(param_2 + 0x1c))" ( (binary_expression "0 < **(int **)(param_2 + 0x1c)" number_literal < (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              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }" { (expression_statement "uVar25 = 1;" (assignment_expression "uVar25 = 1" identifier = number_literal) ;) (do_statement "do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));" do (compound_statement "{\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              }" { (if_statement "if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" if (parenthesized_expression "(local_b0 < 1)" ( (binary_expression "local_b0 < 1" identifier < number_literal) )) (compound_statement "{\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }" { (if_statement "if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" { (labeled_statement "LAB_00081f4a:\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_0002ef20(0);" (assignment_expression "iVar13 = FUN_0002ef20(0)" identifier = (call_expression "FUN_0002ef20(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\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_00081db1;" 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) = uVar25;" (assignment_expression "*(uint *)(iVar13 + 8) = uVar25" (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_b4 = (int *)FUN_000449c0();" (assignment_expression "local_b4 = (int *)FUN_000449c0()" identifier = (cast_expression "(int *)FUN_000449c0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000449c0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(int **)(param_2 + 0x30) = local_b4;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b4" (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_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }" if (parenthesized_expression "(local_b4 != (int *)0x0)" ( (binary_expression "local_b4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }" { (expression_statement "*(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;" (assignment_expression "*(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25" (pointer_expression "*(short *)(local_b4 + local_b0 * 4 + 4)" * (cast_expression "(short *)(local_b4 + local_b0 * 4 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b4 + local_b0 * 4 + 4)" ( (binary_expression "local_b4 + local_b0 * 4 + 4" (binary_expression "local_b4 + local_b0 * 4" identifier + (binary_expression "local_b0 * 4" identifier * number_literal)) + number_literal) )))) = (cast_expression "(short)uVar25" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" identifier = (binary_expression "local_b0 + 1" identifier + number_literal)) ;) })) })) }) (else_clause "else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" else (if_statement "if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" if (parenthesized_expression "(uVar25 != *(ushort *)(local_b4 + 4))" ( (binary_expression "uVar25 != *(ushort *)(local_b4 + 4)" identifier != (pointer_expression "*(ushort *)(local_b4 + 4)" * (cast_expression "(ushort *)(local_b4 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b4 + 4)" ( (binary_expression "local_b4 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "piVar14 = local_b4 + 1;" (assignment_expression "piVar14 = local_b4 + 1" identifier = (binary_expression "local_b4 + 1" identifier + number_literal)) ;) (do_statement "do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);" do (compound_statement "{\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\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 == local_b0) goto LAB_00081f4a;" if (parenthesized_expression "(iVar13 == local_b0)" ( (binary_expression "iVar13 == local_b0" identifier == identifier) )) (goto_statement "goto LAB_00081f4a;" 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 != uVar25)" ( (binary_expression "*puVar1 != uVar25" (pointer_expression "*puVar1" * identifier) != identifier) )) ;) })))) (expression_statement "uVar25 = uVar25 + 1;" (assignment_expression "uVar25 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)))" ( (binary_expression "(*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c))" (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 "((int)uVar25 <= **(int **)(param_2 + 0x1c))" ( (binary_expression "(int)uVar25 <= **(int **)(param_2 + 0x1c)" (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) 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 "piVar14 = (int *)FUN_0002e2d0();" (assignment_expression "piVar14 = (int *)FUN_0002e2d0()" identifier = (cast_expression "(int *)FUN_0002e2d0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e2d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\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 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }" { (expression_statement "*piVar14 = local_b0;" (assignment_expression "*piVar14 = local_b0" (pointer_expression "*piVar14" * identifier) = identifier) ;) (if_statement "if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }" if (parenthesized_expression "(0 < local_b0)" ( (binary_expression "0 < local_b0" number_literal < identifier) )) (compound_statement "{\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 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_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);" do (compound_statement "{\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                }" { (expression_statement "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;" (assignment_expression "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + 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_b4 + iVar15 + 4) - 1" (pointer_expression "*(ushort *)(local_b4 + iVar15 + 4)" * (cast_expression "(ushort *)(local_b4 + iVar15 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b4 + iVar15 + 4)" ( (binary_expression "local_b4 + iVar15 + 4" (binary_expression "local_b4 + 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 "(local_b0 * 4 != iVar15)" ( (binary_expression "local_b0 * 4 != iVar15" (binary_expression "local_b0 * 4" identifier * number_literal) != identifier) )) ;) })) (expression_statement "FUN_0004c930();" (call_expression "FUN_0004c930()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int **)(param_2 + 0x30) = local_b4;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b4" (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_00053100();" (assignment_expression "uVar16 = FUN_00053100()" identifier = (call_expression "FUN_00053100()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined4 *)(iVar27 + 0x30) = uVar16;" (assignment_expression "*(undefined4 *)(iVar27 + 0x30) = uVar16" (pointer_expression "*(undefined4 *)(iVar27 + 0x30)" * (cast_expression "(undefined4 *)(iVar27 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x30)" ( (binary_expression "iVar27 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_a4 = (int *)0x0;\n              local_90 = 0;\n            }" { (expression_statement "local_a4 = (int *)0x0;" (assignment_expression "local_a4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }" else (compound_statement "{\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_90 = piVar20[0xb] + 1;" (assignment_expression "local_90 = 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_000315c0(local_90,0);" (call_expression "FUN_000315c0(local_90,0)" identifier (argument_list "(local_90,0)" ( identifier , number_literal ))) ;) (expression_statement "local_a4 = (int *)FUN_00031ab0();" (assignment_expression "local_a4 = (int *)FUN_00031ab0()" identifier = (cast_expression "(int *)FUN_00031ab0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00031ab0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" if (parenthesized_expression "((local_a4 != (int *)0x0) && (0 < iVar15))" ( (binary_expression "(local_a4 != (int *)0x0) && (0 < iVar15)" (parenthesized_expression "(local_a4 != (int *)0x0)" ( (binary_expression "local_a4 != (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                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);" do (compound_statement "{\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "iVar17 = FUN_0004c840(iVar13);" (assignment_expression "iVar17 = FUN_0004c840(iVar13)" identifier = (call_expression "FUN_0004c840(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "local_a4[iVar13 + 5] = iVar17;" (assignment_expression "local_a4[iVar13 + 5] = iVar17" (subscript_expression "local_a4[iVar13 + 5]" identifier [ (binary_expression "iVar13 + 5" identifier + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)(local_a4[4] + iVar13) = 0;" (assignment_expression "*(undefined1 *)(local_a4[4] + iVar13) = 0" (pointer_expression "*(undefined1 *)(local_a4[4] + iVar13)" * (cast_expression "(undefined1 *)(local_a4[4] + iVar13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a4[4] + iVar13)" ( (binary_expression "local_a4[4] + iVar13" (subscript_expression "local_a4[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 "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 *)(iVar27 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar27 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar27 + 0x38)" * (cast_expression "(undefined4 *)(iVar27 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x38)" ( (binary_expression "iVar27 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00053b50(unaff_EBP + 0x289fb);" (call_expression "FUN_00053b50(unaff_EBP + 0x289fb)" identifier (argument_list "(unaff_EBP + 0x289fb)" ( (binary_expression "unaff_EBP + 0x289fb" identifier + number_literal) ))) ;) (if_statement "if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }" if (parenthesized_expression "(*(int *)(iVar27 + 0x34) == 0)" ( (binary_expression "*(int *)(iVar27 + 0x34) == 0" (pointer_expression "*(int *)(iVar27 + 0x34)" * (cast_expression "(int *)(iVar27 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 0x34)" ( (binary_expression "iVar27 + 0x34" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }" { (expression_statement "FUN_00053b50(unaff_EBP + 0x289fb);" (call_expression "FUN_00053b50(unaff_EBP + 0x289fb)" identifier (argument_list "(unaff_EBP + 0x289fb)" ( (binary_expression "unaff_EBP + 0x289fb" identifier + number_literal) ))) ;) })) (expression_statement "FUN_000781b0();" (call_expression "FUN_000781b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 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_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\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_94 = piVar20[0xb] + 2;" (assignment_expression "local_94 = piVar20[0xb] + 2" identifier = (binary_expression "piVar20[0xb] + 2" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = local_94;" (assignment_expression "piVar20[0xb] = local_94" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(local_9c,0);" (call_expression "FUN_000315c0(local_9c,0)" identifier (argument_list "(local_9c,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(local_94,0);" (call_expression "FUN_000315c0(local_94,0)" identifier (argument_list "(local_94,0)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n              local_94 = 0;\n              local_9c = 0;\n            }" else (compound_statement "{\n              local_94 = 0;\n              local_9c = 0;\n            }" { (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 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_000432e0();\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_000432e0();\n            }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" 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 "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar13 = unaff_EBP + 0x289ee;" (assignment_expression "iVar13 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) (if_statement "if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }" if (parenthesized_expression "((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87))" ( (binary_expression "(bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (parenthesized_expression "(bVar8 != 0x86)" ( (binary_expression "bVar8 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)" ( (comma_expression "iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87" (assignment_expression "iVar13 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) , (binary_expression "bVar8 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }" { (expression_statement "iVar13 = unaff_EBP + 0x289da;" (assignment_expression "iVar13 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }" if (parenthesized_expression "(bVar8 != 0x85)" ( (binary_expression "bVar8 != 0x85" identifier != number_literal) )) (compound_statement "{\n                iVar13 = unaff_EBP + 0x289f5;\n              }" { (expression_statement "iVar13 = unaff_EBP + 0x289f5;" (assignment_expression "iVar13 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) })) })) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fc9,iVar13)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fc9" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000315c0(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 *)(iVar27 + 8) = local_9c;" (assignment_expression "*(int *)(iVar27 + 8) = local_9c" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fd4)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fd4" identifier + number_literal) ))) ;) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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 (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n              iVar17 = piVar28[0x1a] + -1;\n            }" { (expression_statement "iVar17 = piVar28[0x1a] + -1;" (assignment_expression "iVar17 = piVar28[0x1a] + -1" identifier = (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar13 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar13 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 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] + iVar17 * 0x14;\n            }" { (expression_statement "iVar13 = piVar28[0x19] + iVar17 * 0x14;" (assignment_expression "iVar13 = piVar28[0x19] + iVar17 * 0x14" identifier = (binary_expression "piVar28[0x19] + iVar17 * 0x14" (subscript_expression "piVar28[0x19]" identifier [ number_literal ]) + (binary_expression "iVar17 * 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 "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1)" identifier = (call_expression "FUN_000315c0(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 "uVar21 = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "uVar21 = *(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_94;" (assignment_expression "*(int *)(param_2 + 8) = local_94" (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_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fd9)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fd9" identifier + number_literal) ))) ;) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar21" (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_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);" (assignment_expression "uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" identifier = (call_expression "FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" identifier (argument_list "(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" ( (pointer_expression "&local_4c" & identifier) , (pointer_expression "&local_48" & identifier) , identifier , (binary_expression "iVar15 + 3" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\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_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }" { (expression_statement "local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);" (assignment_expression "local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" identifier = (call_expression "FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" identifier (argument_list "(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" ( (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_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }" if (parenthesized_expression "((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0))" ( (binary_expression "(local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)" (parenthesized_expression "(local_a4 != (int *)0x0)" ( (binary_expression "local_a4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)" ( (comma_expression "iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "iVar15 = *local_a4" identifier = (pointer_expression "*local_a4" * identifier)) , (comma_expression "*local_a4 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "*local_a4 = iVar15 + -1" (pointer_expression "*local_a4" * 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_0002a720();\n            }" { (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" identifier = identifier) ;) (expression_statement "local_90 = iVar18;" (assignment_expression "local_90 = iVar18" identifier = identifier) ;) (if_statement "if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\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_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }" { (expression_statement "iVar15 = FUN_000315c0(local_80,0);" (assignment_expression "iVar15 = FUN_000315c0(local_80,0)" identifier = (call_expression "FUN_000315c0(local_80,0)" identifier (argument_list "(local_80,0)" ( identifier , number_literal )))) ;) (expression_statement "local_90 = FUN_000315c0(iVar18,0);" (assignment_expression "local_90 = FUN_000315c0(iVar18,0)" identifier = (call_expression "FUN_000315c0(iVar18,0)" identifier (argument_list "(iVar18,0)" ( identifier , number_literal )))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" identifier = (call_expression "FUN_00026b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" if (parenthesized_expression "(uVar12 == 0x87)" ( (binary_expression "uVar12 == 0x87" identifier == number_literal) )) (compound_statement "{\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }" { (if_statement "if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar27 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar27 + 2)" * (cast_expression "(short *)(iVar27 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 2)" ( (binary_expression "iVar27 + 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 *)(iVar27 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar27 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar27 + 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 *)(iVar27 + 2)" * (cast_expression "(short *)(iVar27 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 2)" ( (binary_expression "iVar27 + 2" identifier + number_literal) ))))) ;) })) (expression_statement "local_a4 = (int *)FUN_000315c0(uVar16,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(uVar16,0)" identifier = (cast_expression "(int *)FUN_000315c0(uVar16,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(uVar16,0)" identifier (argument_list "(uVar16,0)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) (expression_statement "local_ac = iVar15;" (assignment_expression "local_ac = iVar15" identifier = identifier) ;) }) (else_clause "else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" else (compound_statement "{\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" { (expression_statement "local_ac = FUN_000315c0(uVar16,0);" (assignment_expression "local_ac = FUN_000315c0(uVar16,0)" identifier = (call_expression "FUN_000315c0(uVar16,0)" identifier (argument_list "(uVar16,0)" ( identifier , number_literal )))) ;) (expression_statement "FUN_000315c0(iVar18,0);" (call_expression "FUN_000315c0(iVar18,0)" identifier (argument_list "(iVar18,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" identifier (argument_list "(local_ac,0)" ( identifier , number_literal ))) ;) (expression_statement "local_a4 = (int *)FUN_000315c0(uVar16,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(uVar16,0)" identifier = (cast_expression "(int *)FUN_000315c0(uVar16,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(uVar16,0)" identifier (argument_list "(uVar16,0)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) (if_statement "if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }" if (parenthesized_expression "(uVar12 != 0x85)" ( (binary_expression "uVar12 != 0x85" identifier != number_literal) )) (compound_statement "{\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }" { (expression_statement "local_a4 = (int *)FUN_000315c0(iVar15,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(iVar15,0)" identifier = (cast_expression "(int *)FUN_000315c0(iVar15,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000315c0(iVar15,0)" identifier (argument_list "(iVar15,0)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) })) }))) (expression_statement "iVar18 = piVar28[0x1a];" (assignment_expression "iVar18 = piVar28[0x1a]" identifier = (subscript_expression "piVar28[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\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_000315c0(local_80,0);\n            }" { (expression_statement "FUN_000315c0(local_80,0);" (call_expression "FUN_000315c0(local_80,0)" identifier (argument_list "(local_80,0)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" identifier (argument_list "(local_ac,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" identifier (argument_list "(iVar11,0)" ( identifier , number_literal ))) ;) (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 < iVar17) {\n              iVar15 = iVar17;\n            }" if (parenthesized_expression "(-1 < iVar17)" ( (binary_expression "-1 < iVar17" number_literal < identifier) )) (compound_statement "{\n              iVar15 = iVar17;\n            }" { (expression_statement "iVar15 = iVar17;" (assignment_expression "iVar15 = iVar17" identifier = identifier) ;) })) (expression_statement "iVar11 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar11 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" 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_000315c0(local_90,0);" (call_expression "FUN_000315c0(local_90,0)" identifier (argument_list "(local_90,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" identifier (argument_list "(local_ac,0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_00032090(0xfffffff1);" (call_expression "FUN_00032090(0xfffffff1)" identifier (argument_list "(0xfffffff1)" ( number_literal ))) ;) (expression_statement "FUN_000315c0(local_30,local_b0);" (call_expression "FUN_000315c0(local_30,local_b0)" identifier (argument_list "(local_30,local_b0)" ( identifier , identifier ))) ;) (expression_statement "FUN_00032090(0xfffffff7);" (call_expression "FUN_00032090(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_000315c0(local_a4,iVar18);" (call_expression "FUN_000315c0(local_a4,iVar18)" identifier (argument_list "(local_a4,iVar18)" ( identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\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_00043210();\n            }" { (expression_statement "FUN_00043210();" (call_expression "FUN_00043210()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(int *)(param_2 + 0x34) = iVar27;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar27" (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 **)(iVar27 + 0x38) = param_2;" (assignment_expression "*(byte **)(iVar27 + 0x38) = param_2" (pointer_expression "*(byte **)(iVar27 + 0x38)" * (cast_expression "(byte **)(iVar27 + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar27 + 0x38)" ( (binary_expression "iVar27 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = piVar20[0x36];" (assignment_expression "iVar18 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(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 (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 "iVar15 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar15 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = 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                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }" { (expression_statement "iVar15 = piVar28[0x19] + iVar18 * 0x14;" (assignment_expression "iVar15 = 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 "iVar18 = *(int *)(iVar15 + 8);" (assignment_expression "iVar18 = *(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] = iVar18;" (assignment_expression "piVar20[0x36] = iVar18" (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_00081db1;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }" if (parenthesized_expression "(*(int *)(iVar18 + 0x34) == 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) )) (compound_statement "{\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }" { (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fdf)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fdf" identifier + number_literal) ))) ;) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fee)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fee" identifier + number_literal) ))) ;) })) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" if (parenthesized_expression "(bVar8 == 0x85)" ( (binary_expression "bVar8 == 0x85" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }" { (expression_statement "*(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);" (assignment_expression "*(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8)" (pointer_expression "*(undefined4 *)(iVar18 + 8)" * (cast_expression "(undefined4 *)(iVar18 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 8)" ( (binary_expression "iVar18 + 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 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc)" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 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 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar18 + 0x3c)" * (cast_expression "(undefined4 *)(iVar18 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 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_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" 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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }" { (expression_statement "local_c0 = *(int *)(iVar18 + 8);" (assignment_expression "local_c0 = *(int *)(iVar18 + 8)" identifier = (pointer_expression "*(int *)(iVar18 + 8)" * (cast_expression "(int *)(iVar18 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 8)" ( (binary_expression "iVar18 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = *(undefined4 *)(iVar18 + 0xc);" (assignment_expression "uVar16 = *(undefined4 *)(iVar18 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" * (cast_expression "(undefined4 *)(iVar18 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xc)" ( (binary_expression "iVar18 + 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_c0;" (assignment_expression "*(int *)(param_2 + 8) = local_c0" (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_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }" { (expression_statement "uVar30 = FUN_000315c0(0,0);" (assignment_expression "uVar30 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);" (assignment_expression "uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar30 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar30 >> 0x20)" ( (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_c0 = (int)uVar30;" (assignment_expression "local_c0 = (int)uVar30" identifier = (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar27 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar27 = *(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 (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }" { (expression_statement "FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16)" identifier (argument_list "(iVar27 + 1,iVar27,uVar16,uVar16)" ( (binary_expression "iVar27 + 1" identifier + number_literal) , identifier , identifier , identifier ))) ;) })) })) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x289da)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x289da" identifier + number_literal) ))) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar18" (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 "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" identifier = (call_expression "FUN_00026b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }" if (parenthesized_expression "(((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c))" ( (binary_expression "((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)" (parenthesized_expression "((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0))" ( (binary_expression "(*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)" (parenthesized_expression "(*(int *)(iVar18 + 0x3c) != 0)" ( (binary_expression "*(int *)(iVar18 + 0x3c) != 0" (pointer_expression "*(int *)(iVar18 + 0x3c)" * (cast_expression "(int *)(iVar18 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0x3c)" ( (binary_expression "iVar18 + 0x3c" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar18 = FUN_00029640(), iVar18 != 0)" ( (comma_expression "iVar18 = FUN_00029640(), iVar18 != 0" (assignment_expression "iVar18 = FUN_00029640()" identifier = (call_expression "FUN_00029640()" identifier (argument_list "()" ( )))) , (binary_expression "iVar18 != 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                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }" { (expression_statement "sVar10 = *(short *)(param_2 + 2);" (assignment_expression "sVar10 = *(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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }" { (if_statement "if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" if (parenthesized_expression "(local_3c == 1)" ( (binary_expression "local_3c == 1" identifier == number_literal) )) (compound_statement "{\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }" { (if_statement "if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" if (parenthesized_expression "(0 < sVar10)" ( (binary_expression "0 < sVar10" number_literal < identifier) )) (compound_statement "{\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" { (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00083ad6;" goto statement_identifier ;) })) }) (else_clause "else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" else (compound_statement "{\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" { (expression_statement "uVar22 = local_3c;" (assignment_expression "uVar22 = local_3c" identifier = identifier) ;) (expression_statement "uVar25 = uVar12;" (assignment_expression "uVar25 = uVar12" identifier = identifier) ;) (expression_statement "sVar7 = 0x28;" (assignment_expression "sVar7 = 0x28" identifier = number_literal) ;) (do_statement "do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);" do (compound_statement "{\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    }" { (expression_statement "sVar23 = sVar7;" (assignment_expression "sVar23 = sVar7" identifier = identifier) ;) (expression_statement "uVar5 = uVar22 * 2;" (assignment_expression "uVar5 = uVar22 * 2" identifier = (binary_expression "uVar22 * 2" identifier * number_literal)) ;) (if_statement "if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;" if (parenthesized_expression "((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0)" ( (binary_expression "(uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0" (binary_expression "(uVar25 & 0x7fffffff) != 0" (parenthesized_expression "(uVar25 & 0x7fffffff)" ( (binary_expression "uVar25 & 0x7fffffff" identifier & number_literal) )) != number_literal) || (binary_expression "(int)uVar22 < 0" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) )) (break_statement "break;" break ;)) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar22 = uVar5;" (assignment_expression "uVar22 = uVar5" identifier = identifier) ;) (expression_statement "sVar7 = sVar23 + -10;" (assignment_expression "sVar7 = sVar23 + -10" identifier = (binary_expression "sVar23 + -10" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < 8)" ( (binary_expression "uVar5 < 8" identifier < number_literal) )) ;) (if_statement "if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" if (parenthesized_expression "((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10)" ( (binary_expression "(short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10" (cast_expression "(short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP))" ( (binary_expression "sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" (binary_expression "sVar23 + -0x14" identifier + number_literal) + (pointer_expression "*(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" * (cast_expression "(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" ( (binary_expression "&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (uVar5 & 7) * 2" (pointer_expression "&UNK_0002f45f" & identifier) + (binary_expression "(uVar5 & 7) * 2" (parenthesized_expression "(uVar5 & 7)" ( (binary_expression "uVar5 & 7" identifier & number_literal) )) * number_literal)) + identifier) ))))) ))) < identifier) )) (compound_statement "{\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" { (expression_statement "sVar10 = 0x28;" (assignment_expression "sVar10 = 0x28" identifier = number_literal) ;) (expression_statement "local_bc = local_3c;" (assignment_expression "local_bc = local_3c" identifier = identifier) ;) (do_statement "do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);" do (compound_statement "{\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      }" { (expression_statement "sVar10 = sVar10 + -10;" (assignment_expression "sVar10 = sVar10 + -10" identifier = (binary_expression "sVar10 + -10" identifier + number_literal)) ;) (expression_statement "bVar29 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar29 = 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)bVar29 != 0) break;" if (parenthesized_expression "(uVar12 * 2 + (uint)bVar29 != 0)" ( (binary_expression "uVar12 * 2 + (uint)bVar29 != 0" (binary_expression "uVar12 * 2 + (uint)bVar29" (binary_expression "uVar12 * 2" identifier * number_literal) + (cast_expression "(uint)bVar29" ( (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_00083ac3;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }" else (compound_statement "{\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }" { (if_statement "if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 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                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" { (for_statement "for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }" for ( ; (binary_expression "uVar12 >> uVar25 == 0" (binary_expression "uVar12 >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar25 = uVar25 ^ 0x1f;" (assignment_expression "uVar25 = uVar25 ^ 0x1f" identifier = (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }" else (compound_statement "{\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" { (for_statement "for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }" for ( ; (binary_expression "local_3c >> uVar25 == 0" (binary_expression "local_3c >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                      }" { })) })) (expression_statement "uVar25 = (uVar25 ^ 0x1f) + 0x20;" (assignment_expression "uVar25 = (uVar25 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar25 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar25 ^ 0x1f)" ( (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar25 = 0x3c - uVar25;" (assignment_expression "uVar25 = 0x3c - uVar25" identifier = (binary_expression "0x3c - uVar25" number_literal - identifier)) ;) (expression_statement "bVar8 = (byte)uVar25 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar25 & 0x1f" identifier = (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;" (assignment_expression "uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8" identifier = (binary_expression "local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (binary_expression "local_3c >> bVar8" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }" if (parenthesized_expression "((uVar25 & 0x20) != 0)" ( (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" ( (binary_expression "uVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }" { (expression_statement "uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);" (assignment_expression "uVar22 = uVar12 >> ((byte)uVar25 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar25 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }" if (parenthesized_expression "((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10)" ( (binary_expression "(short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10" (cast_expression "(short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP))" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP))" ( (binary_expression "(short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" (binary_expression "(short)uVar25 * 10 + 0x1e" (binary_expression "(short)uVar25 * 10" (cast_expression "(short)uVar25" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal) + (pointer_expression "*(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" * (cast_expression "(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" ( (binary_expression "&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (uVar22 & 7) * 2" (pointer_expression "&UNK_0002f45f" & identifier) + (binary_expression "(uVar22 & 7) * 2" (parenthesized_expression "(uVar22 & 7)" ( (binary_expression "uVar22 & 7" identifier & number_literal) )) * number_literal)) + identifier) ))))) ))) < identifier) )) (compound_statement "{\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }" { (if_statement "if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 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                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" { (for_statement "for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }" for ( ; (binary_expression "uVar12 >> uVar25 == 0" (binary_expression "uVar12 >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar25 = uVar25 ^ 0x1f;" (assignment_expression "uVar25 = uVar25 ^ 0x1f" identifier = (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal)) ;) }) (else_clause "else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }" else (compound_statement "{\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }" { (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" identifier = number_literal) ;) (if_statement "if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" { (for_statement "for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }" for ( ; (binary_expression "local_3c >> uVar25 == 0" (binary_expression "local_3c >> uVar25" identifier >> identifier) == number_literal) ; (assignment_expression "uVar25 = uVar25 - 1" identifier = (binary_expression "uVar25 - 1" identifier - number_literal)) ) (compound_statement "{\n                        }" { })) })) (expression_statement "uVar25 = (uVar25 ^ 0x1f) + 0x20;" (assignment_expression "uVar25 = (uVar25 ^ 0x1f) + 0x20" identifier = (binary_expression "(uVar25 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar25 ^ 0x1f)" ( (binary_expression "uVar25 ^ 0x1f" identifier ^ number_literal) )) + number_literal)) ;) }))) (expression_statement "uVar25 = 0x3c - uVar25;" (assignment_expression "uVar25 = 0x3c - uVar25" identifier = (binary_expression "0x3c - uVar25" number_literal - identifier)) ;) (expression_statement "sVar10 = (short)uVar25 * 10 + 0x28;" (assignment_expression "sVar10 = (short)uVar25 * 10 + 0x28" identifier = (binary_expression "(short)uVar25 * 10 + 0x28" (binary_expression "(short)uVar25 * 10" (cast_expression "(short)uVar25" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "bVar8 = (byte)uVar25 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar25 & 0x1f" identifier = (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;" (assignment_expression "local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8" identifier = (binary_expression "local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (binary_expression "local_3c >> bVar8" identifier >> identifier) | (binary_expression "uVar12 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }" if (parenthesized_expression "((uVar25 & 0x20) != 0)" ( (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" ( (binary_expression "uVar25 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }" { (expression_statement "local_bc = uVar12 >> ((byte)uVar25 & 0x1f);" (assignment_expression "local_bc = uVar12 >> ((byte)uVar25 & 0x1f)" identifier = (binary_expression "uVar12 >> ((byte)uVar25 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar25 & 0x1f)" ( (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (labeled_statement "LAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);" statement_identifier : (expression_statement "sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);" (assignment_expression "sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" identifier = (binary_expression "sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (binary_expression "sVar10 + -10" identifier + number_literal) + (pointer_expression "*(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" * (cast_expression "(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" ( (binary_expression "&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (local_bc & 7) * 2" (pointer_expression "&UNK_0002f45f" & identifier) + (binary_expression "(local_bc & 7) * 2" (parenthesized_expression "(local_bc & 7)" ( (binary_expression "local_bc & 7" identifier & number_literal) )) * number_literal)) + identifier) )))))) ;)) (labeled_statement "LAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;" statement_identifier : (expression_statement "*(short *)(param_2 + 2) = sVar10;" (assignment_expression "*(short *)(param_2 + 2) = sVar10" (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_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }" { (expression_statement "iVar18 = local_c8[0x1a] + -1;" (assignment_expression "iVar18 = 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_c0) {\n                  iVar18 = local_c0;\n                }" if (parenthesized_expression "(-1 < local_c0)" ( (binary_expression "-1 < local_c0" number_literal < identifier) )) (compound_statement "{\n                  iVar18 = local_c0;\n                }" { (expression_statement "iVar18 = local_c0;" (assignment_expression "iVar18 = local_c0" identifier = identifier) ;) })) (expression_statement "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 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                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }" { (expression_statement "iVar27 = iVar18 * 0x14 + local_c8[0x19];" (assignment_expression "iVar27 = iVar18 * 0x14 + local_c8[0x19]" identifier = (binary_expression "iVar18 * 0x14 + local_c8[0x19]" (binary_expression "iVar18 * 0x14" identifier * number_literal) + (subscript_expression "local_c8[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "*(int *)(iVar27 + 8) = local_c8[0x1a];" (assignment_expression "*(int *)(iVar27 + 8) = local_c8[0x1a]" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) )))) = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_00082ed0;" goto statement_identifier ;) })) }) (else_clause "else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" else (compound_statement "{\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" { (if_statement "if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" if (parenthesized_expression "((bVar8 == 0x86) || (bVar8 == 0x84))" ( (binary_expression "(bVar8 == 0x86) || (bVar8 == 0x84)" (parenthesized_expression "(bVar8 == 0x86)" ( (binary_expression "bVar8 == 0x86" identifier == number_literal) )) || (parenthesized_expression "(bVar8 == 0x84)" ( (binary_expression "bVar8 == 0x84" identifier == number_literal) ))) )) (compound_statement "{\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" { (if_statement "if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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                local_c0 = local_70;\n              }" { (expression_statement "local_c0 = local_70;" (assignment_expression "local_c0 = local_70" identifier = identifier) ;) }) (else_clause "else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n              }" else (compound_statement "{\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n              }" { (expression_statement "local_c0 = piVar20[10];" (assignment_expression "local_c0 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = local_c0 + 1;" (assignment_expression "piVar20[10] = local_c0 + 1" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_000315c0(0,0);" (assignment_expression "uVar16 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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 "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (do_statement "do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);" do (compound_statement "{\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                }" { (expression_statement "pbVar26 = pbVar4;" (assignment_expression "pbVar26 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar4 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar4 = *(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 "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (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 = local_c0;" (assignment_expression "local_38 = local_c0" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 != (byte *)0x0) goto LAB_00082b00;" 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_00082b00;" goto statement_identifier ;)) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }" if (parenthesized_expression "(bVar8 == 0x86)" ( (binary_expression "bVar8 == 0x86" identifier == number_literal) )) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\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 "iVar27 = unaff_EBP + 0x289ee;" (assignment_expression "iVar27 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) }) (else_clause "else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }" else (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\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 "iVar27 = unaff_EBP + 0x289da;" (assignment_expression "iVar27 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }" if (parenthesized_expression "(bVar8 != 0x85)" ( (binary_expression "bVar8 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }" { (expression_statement "iVar27 = unaff_EBP + 0x289e4;" (assignment_expression "iVar27 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }" if (parenthesized_expression "(bVar8 != 0x87)" ( (binary_expression "bVar8 != 0x87" identifier != number_literal) )) (compound_statement "{\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }" { (expression_statement "iVar27 = unaff_EBP + 0x289f5;" (assignment_expression "iVar27 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) })) })) }))) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x29001,iVar27)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x29001" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar18" (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                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }" if (parenthesized_expression "(*param_2 == 0x84)" ( (binary_expression "*param_2 == 0x84" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }" { (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" identifier = (call_expression "FUN_00026b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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_000432e0();\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_000432e0();\n              }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" 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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }" { (expression_statement "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = 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 "uVar16 = FUN_000781b0();" (assignment_expression "uVar16 = FUN_000781b0()" identifier = (call_expression "FUN_000781b0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(iVar18,0,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar18,0,uVar16,uVar16)" identifier (argument_list "(iVar18,0,uVar16,uVar16)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "iVar27 = local_c8[0x1a];" (assignment_expression "iVar27 = local_c8[0x1a]" identifier = (subscript_expression "local_c8[0x1a]" identifier [ number_literal ])) ;) (expression_statement "FUN_00079470(0,0,&local_74,iVar11,iVar18);" (call_expression "FUN_00079470(0,0,&local_74,iVar11,iVar18)" identifier (argument_list "(0,0,&local_74,iVar11,iVar18)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "uVar21 = FUN_00031430();" (assignment_expression "uVar21 = FUN_00031430()" identifier = (call_expression "FUN_00031430()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar31 = uVar21;" (assignment_expression "uVar31 = uVar21" identifier = identifier) ;) (expression_statement "FUN_000315c0(iVar27,0,uVar21,uVar21);" (call_expression "FUN_000315c0(iVar27,0,uVar21,uVar21)" identifier (argument_list "(iVar27,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);" statement_identifier : (expression_statement "FUN_000315c0(0,0,uVar21,uVar31);" (call_expression "FUN_000315c0(0,0,uVar21,uVar31)" identifier (argument_list "(0,0,uVar21,uVar31)" ( number_literal , number_literal , identifier , identifier ))) ;)) })) (labeled_statement "LAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }" statement_identifier : (if_statement "if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\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                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }" { (expression_statement "iVar18 = piVar20[0x36];" (assignment_expression "iVar18 = piVar20[0x36]" identifier = (subscript_expression "piVar20[0x36]" identifier [ number_literal ])) ;) (if_statement "if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 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 (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 "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 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                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }" { (expression_statement "iVar27 = iVar18 * 0x14 + piVar28[0x19];" (assignment_expression "iVar27 = iVar18 * 0x14 + piVar28[0x19]" identifier = (binary_expression "iVar18 * 0x14 + piVar28[0x19]" (binary_expression "iVar18 * 0x14" identifier * number_literal) + (subscript_expression "piVar28[0x19]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar18 = *(int *)(iVar27 + 8);" (assignment_expression "iVar18 = *(int *)(iVar27 + 8)" identifier = (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "piVar20[0x36] = iVar18;" (assignment_expression "piVar20[0x36] = iVar18" (subscript_expression "piVar20[0x36]" identifier [ number_literal ]) = identifier) ;) }))) (if_statement "if (piVar20[9] == 0) goto LAB_00082732;" if (parenthesized_expression "(piVar20[9] == 0)" ( (binary_expression "piVar20[9] == 0" (subscript_expression "piVar20[9]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00082732;" goto statement_identifier ;)) (goto_statement "goto LAB_0008273c;" goto statement_identifier ;) })) (expression_statement "iVar27 = piVar20[10];" (assignment_expression "iVar27 = piVar20[10]" identifier = (subscript_expression "piVar20[10]" identifier [ number_literal ])) ;) (expression_statement "piVar20[10] = iVar27 + 2;" (assignment_expression "piVar20[10] = iVar27 + 2" (subscript_expression "piVar20[10]" identifier [ number_literal ]) = (binary_expression "iVar27 + 2" identifier + number_literal)) ;) (expression_statement "uVar16 = FUN_000315c0(0,0);" (assignment_expression "uVar16 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , 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 "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (do_statement "do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (byte *)0x0);" do (compound_statement "{\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            }" { (expression_statement "pbVar26 = pbVar4;" (assignment_expression "pbVar26 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar4 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar4 = *(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 "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (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 = iVar27;" (assignment_expression "local_38 = iVar27" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\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              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }" { (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *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) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0x18) = uVar21" (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 "iVar11 = unaff_EBP + 0x289ee;" (assignment_expression "iVar11 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) (if_statement "if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }" if (parenthesized_expression "((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87))" ( (binary_expression "(bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (parenthesized_expression "(bVar8 != 0x86)" ( (binary_expression "bVar8 != 0x86" identifier != number_literal) )) && (parenthesized_expression "(iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)" ( (comma_expression "iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87" (assignment_expression "iVar11 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) , (binary_expression "bVar8 != 0x87" identifier != number_literal)) ))) )) (compound_statement "{\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }" { (expression_statement "iVar11 = unaff_EBP + 0x289da;" (assignment_expression "iVar11 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (if_statement "if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }" if (parenthesized_expression "(bVar8 != 0x85)" ( (binary_expression "bVar8 != 0x85" identifier != number_literal) )) (compound_statement "{\n                  iVar11 = unaff_EBP + 0x289f5;\n                }" { (expression_statement "iVar11 = unaff_EBP + 0x289f5;" (assignment_expression "iVar11 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) })) })) (expression_statement "local_38 = iVar27 + 1;" (assignment_expression "local_38 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x29001,iVar11)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x29001" identifier + number_literal) , identifier ))) ;) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" identifier = (cast_expression "(byte *)FUN_00070950()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00070950()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar18" (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 *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }" if (parenthesized_expression "(*(short *)(iVar18 + 2) < *(short *)(param_2 + 2))" ( (binary_expression "*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar18 + 2)" * (cast_expression "(short *)(iVar18 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 2)" ( (binary_expression "iVar18 + 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 *)(iVar18 + 2);\n              }" { (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar18 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar18 + 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 *)(iVar18 + 2)" * (cast_expression "(short *)(iVar18 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 2)" ( (binary_expression "iVar18 + 2" identifier + number_literal) ))))) ;) })) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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_000432e0();\n              }" { (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" 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                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\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                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }" { (expression_statement "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar27 = piVar20[0xe] + -2;" (assignment_expression "iVar27 = piVar20[0xe] + -2" identifier = (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar27;" (assignment_expression "piVar20[0xe] = iVar27" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar16 = FUN_000781b0();" (assignment_expression "uVar16 = FUN_000781b0()" identifier = (call_expression "FUN_000781b0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_000315c0(iVar18,0,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar18,0,uVar16,uVar16)" identifier (argument_list "(iVar18,0,uVar16,uVar16)" ( identifier , number_literal , identifier , identifier ))) ;) (if_statement "if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\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                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }" { (expression_statement "iVar11 = piVar20[0xb] + 1;" (assignment_expression "iVar11 = piVar20[0xb] + 1" identifier = (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xb] = iVar11;" (assignment_expression "piVar20[0xb] = iVar11" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar28 = piVar20;" (assignment_expression "piVar28 = piVar20" identifier = identifier) ;) }) (else_clause "else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }" else (compound_statement "{\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }" { (expression_statement "bVar8 = *(char *)((int)piVar20 + 0x13) - 1;" (assignment_expression "bVar8 = *(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) = bVar8;" (assignment_expression "*(byte *)((int)piVar20 + 0x13) = bVar8" (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 "iVar11 = piVar20[bVar8 + 0x26];" (assignment_expression "iVar11 = piVar20[bVar8 + 0x26]" identifier = (subscript_expression "piVar20[bVar8 + 0x26]" identifier [ (binary_expression "bVar8 + 0x26" identifier + number_literal) ])) ;) (expression_statement "piVar28 = extraout_ECX;" (assignment_expression "piVar28 = extraout_ECX" identifier = identifier) ;) }))) (expression_statement "uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);" (assignment_expression "uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28)" identifier = (call_expression "FUN_000315c0(iVar11,0,piVar28,piVar28)" identifier (argument_list "(iVar11,0,piVar28,piVar28)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "FUN_000316b0(iVar27,iVar11,0);" (call_expression "FUN_000316b0(iVar27,iVar11,0)" identifier (argument_list "(iVar27,iVar11,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (iVar11 != 0) {\n                  FUN_00029c40();\n                }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00029c40();\n                }" { (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_00079470(0,0,&local_74,iVar27,iVar18);" (call_expression "FUN_00079470(0,0,&local_74,iVar27,iVar18)" identifier (argument_list "(0,0,&local_74,iVar27,iVar18)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar21 = extraout_ECX_00;" (assignment_expression "uVar21 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "uVar31 = extraout_ECX_00;" (assignment_expression "uVar31 = extraout_ECX_00" identifier = identifier) ;) (expression_statement "FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);" (call_expression "FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00)" identifier (argument_list "(uVar16,0,extraout_ECX_00,extraout_ECX_00)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (goto_statement "goto LAB_00083517;" goto statement_identifier ;) })) (goto_statement "goto LAB_00082ed0;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00082b00:\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_00081db1;" 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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }" { (labeled_statement "LAB_000827ee:\n          iVar18 = FUN_0003c520(0,0);" statement_identifier : (expression_statement "iVar18 = FUN_0003c520(0,0);" (assignment_expression "iVar18 = FUN_0003c520(0,0)" identifier = (call_expression "FUN_0003c520(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;)) (if_statement "if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" { (expression_statement "iVar17 = piVar20[0xe] + -1;" (assignment_expression "iVar17 = piVar20[0xe] + -1" identifier = (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar20[0xe] = iVar17;" (assignment_expression "piVar20[0xe] = iVar17" (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_000781b0();" (call_expression "FUN_000781b0()" 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 "iVar18 = *piVar28;" (assignment_expression "iVar18 = *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 "iVar27 = *(int *)(param_2 + 8);" (assignment_expression "iVar27 = *(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 "iVar11 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar11 = *(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 "iVar13 = extraout_EDX;" (assignment_expression "iVar13 = extraout_EDX" identifier = identifier) ;) (if_statement "if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "bVar8 = *(byte *)((int)piVar28 + 0x2d);" (assignment_expression "bVar8 = *(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 (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }" while (parenthesized_expression "(((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18)))" ( (parenthesized_expression "((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))" ( (binary_expression "(bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18)" (binary_expression "(bVar8 & 0x20) == 0" (parenthesized_expression "(bVar8 & 0x20)" ( (binary_expression "bVar8 & 0x20" identifier & number_literal) )) == number_literal) && (parenthesized_expression "(iVar19 = iVar19 + 1, iVar19 != iVar18)" ( (comma_expression "iVar19 = iVar19 + 1, iVar19 != iVar18" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) , (binary_expression "iVar19 != iVar18" identifier != identifier)) ))) )) )) (compound_statement "{\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }" { (expression_statement "iVar13 = iVar19 * 0x44;" (assignment_expression "iVar13 = iVar19 * 0x44" identifier = (binary_expression "iVar19 * 0x44" identifier * number_literal)) ;) (expression_statement "bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);" (assignment_expression "bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d)" identifier = (pointer_expression "*(byte *)((int)piVar28 + iVar13 + 0x2d)" * (cast_expression "(byte *)((int)piVar28 + iVar13 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar28 + iVar13 + 0x2d)" ( (binary_expression "(int)piVar28 + iVar13 + 0x2d" (binary_expression "(int)piVar28 + iVar13" (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 "iVar18 = piVar20[0xb] + 1;" (assignment_expression "iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0,iVar13,iVar13);" (call_expression "FUN_000315c0(iVar18,local_c0,iVar13,iVar13)" identifier (argument_list "(iVar18,local_c0,iVar13,iVar13)" ( identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00082930;" 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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0,piVar20,piVar20);" (call_expression "FUN_000315c0(iVar18,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar18,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(local_c0,0);" (call_expression "FUN_000315c0(local_c0,0)" identifier (argument_list "(local_c0,0)" ( identifier , number_literal ))) ;) (expression_statement "piVar28 = extraout_EDX_00;" (assignment_expression "piVar28 = extraout_EDX_00" identifier = identifier) ;) (labeled_statement "LAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" statement_identifier : (if_statement "if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" if (parenthesized_expression "(local_bc != 0)" ( (binary_expression "local_bc != 0" identifier != number_literal) )) (compound_statement "{\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" { (expression_statement "uVar21 = FUN_000315c0(0,0,piVar28,piVar28);" (assignment_expression "uVar21 = FUN_000315c0(0,0,piVar28,piVar28)" identifier = (call_expression "FUN_000315c0(0,0,piVar28,piVar28)" identifier (argument_list "(0,0,piVar28,piVar28)" ( number_literal , number_literal , identifier , identifier )))) ;) (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) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar21" (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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fb4)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fb4)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fb4" identifier + number_literal) ))) ;) (expression_statement "uVar30 = FUN_00070950();" (assignment_expression "uVar30 = FUN_00070950()" identifier = (call_expression "FUN_00070950()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);" (assignment_expression "uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20)" identifier = (call_expression "(undefined4)((ulonglong)uVar30 >> 0x20)" (parenthesized_expression "(undefined4)" ( identifier )) (argument_list "((ulonglong)uVar30 >> 0x20)" ( (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (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 ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\n              }" if (parenthesized_expression "((int)uVar30 == 0)" ( (binary_expression "(int)uVar30 == 0" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\n              }" { (expression_statement "local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);" (assignment_expression "local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21)" identifier = (call_expression "FUN_000315c0(iVar17,0,uVar21,uVar21)" identifier (argument_list "(iVar17,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (if_statement "if (piVar14 == (int *)0x0) goto LAB_00083923;" 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_00083923;" goto statement_identifier ;)) (expression_statement "uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);" (assignment_expression "uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21)" identifier = (call_expression "FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21)" identifier (argument_list "(*piVar14 + 1,iVar18,uVar21,uVar21)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) , identifier , identifier , identifier )))) ;) (labeled_statement "LAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);" statement_identifier : (expression_statement "FUN_000315c0(0,0,uVar21,uVar21);" (call_expression "FUN_000315c0(0,0,uVar21,uVar21)" identifier (argument_list "(0,0,uVar21,uVar21)" ( number_literal , number_literal , identifier , identifier ))) ;)) (expression_statement "piVar28 = (int *)(piVar20[0xe] + -1);" (assignment_expression "piVar28 = (int *)(piVar20[0xe] + -1)" identifier = (cast_expression "(int *)(piVar20[0xe] + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar20[0xe] + -1)" ( (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "piVar20[0xe] = (int)piVar28;" (assignment_expression "piVar20[0xe] = (int)piVar28" (subscript_expression "piVar20[0xe]" identifier [ number_literal ]) = (cast_expression "(int)piVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar11) {\n                  FUN_00031970();\n                }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n                  FUN_00031970();\n                }" { (expression_statement "FUN_00031970();" (call_expression "FUN_00031970()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);" (assignment_expression "uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17)" identifier = (call_expression "FUN_00079470(0,0,&local_74,piVar28,iVar17)" identifier (argument_list "(0,0,&local_74,piVar28,iVar17)" ( number_literal , number_literal , (pointer_expression "&local_74" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }" { (expression_statement "FUN_000315c0(iVar17,0,uVar21,uVar21);" (call_expression "FUN_000315c0(iVar17,0,uVar21,uVar21)" identifier (argument_list "(iVar17,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier ))) ;) })) (expression_statement "uVar21 = FUN_00031430();" (assignment_expression "uVar21 = FUN_00031430()" identifier = (call_expression "FUN_00031430()" 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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fba,uVar21)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fba" identifier + number_literal) , identifier ))) ;) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" 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) ;) (expression_statement "piVar28 = piVar20;" (assignment_expression "piVar28 = piVar20" identifier = identifier) ;) }) (else_clause "else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }" else (compound_statement "{\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }" { (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21)" identifier (argument_list "(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21)" ( identifier , (binary_expression "unaff_EBP + 0x2b91b" identifier + number_literal) , identifier , identifier ))) ;) }))) (expression_statement "FUN_000315c0(local_c0,0,piVar28,piVar28);" (call_expression "FUN_000315c0(local_c0,0,piVar28,piVar28)" identifier (argument_list "(local_c0,0,piVar28,piVar28)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0);" (call_expression "FUN_000315c0(iVar18,local_c0)" identifier (argument_list "(iVar18,local_c0)" ( identifier , identifier ))) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (labeled_statement "LAB_00082930:\n                FUN_0004c930();" statement_identifier : (expression_statement "FUN_0004c930();" (call_expression "FUN_0004c930()" identifier (argument_list "()" ( ))) ;)) (expression_statement "FUN_000315c0(*piVar14 + 2,0);" (call_expression "FUN_000315c0(*piVar14 + 2,0)" identifier (argument_list "(*piVar14 + 2,0)" ( (binary_expression "*piVar14 + 2" (pointer_expression "*piVar14" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "FUN_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "piVar28 = piVar14;" (assignment_expression "piVar28 = piVar14" identifier = identifier) ;) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" identifier = identifier) ;) (goto_statement "goto LAB_00082986;" 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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000315c0(iVar18,local_c0,piVar20,piVar20);" (call_expression "FUN_000315c0(iVar18,local_c0,piVar20,piVar20)" identifier (argument_list "(iVar18,local_c0,piVar20,piVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000315c0(local_c0,0);" (call_expression "FUN_000315c0(local_c0,0)" identifier (argument_list "(local_c0,0)" ( 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 "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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fb4)" identifier (argument_list "(piVar20,1,unaff_EBP + 0x28fb4)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28fb4" identifier + number_literal) ))) ;) (expression_statement "iVar13 = FUN_00070950();" (assignment_expression "iVar13 = FUN_00070950()" identifier = (call_expression "FUN_00070950()" 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 (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }" { (expression_statement "local_c0 = FUN_000315c0(iVar17,0,0,0);" (assignment_expression "local_c0 = FUN_000315c0(iVar17,0,0,0)" identifier = (call_expression "FUN_000315c0(iVar17,0,0,0)" identifier (argument_list "(iVar17,0,0,0)" ( identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" identifier = (call_expression "FUN_000315c0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (labeled_statement "LAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);" statement_identifier : (expression_statement "uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);" (assignment_expression "uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21)" identifier = (call_expression "FUN_000315c0(iVar18,0,uVar21,uVar21)" identifier (argument_list "(iVar18,0,uVar21,uVar21)" ( identifier , number_literal , identifier , identifier )))) ;)) (goto_statement "goto LAB_00083747;" goto statement_identifier ;) })) }))) (if_statement "if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\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_000433a0();\n            }" { (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" 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_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }" else (compound_statement "{\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }" { (labeled_statement "LAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);" statement_identifier : (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7)" identifier (argument_list "(piVar20,unaff_EBP + 0x2b8e7)" ( identifier , (binary_expression "unaff_EBP + 0x2b8e7" identifier + number_literal) ))) ;)) }))) (if_statement "if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\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_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }" { (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 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_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }" statement_identifier : (if_statement "if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\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            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }" { (expression_statement "iVar18 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar18 = **(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_00031ab0();" (assignment_expression "piVar20 = (int *)FUN_00031ab0()" identifier = (cast_expression "(int *)FUN_00031ab0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00031ab0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\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 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }" else (compound_statement "{\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }" { (if_statement "if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);" do (compound_statement "{\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                }" { (expression_statement "iVar11 = FUN_0004c840(iVar27);" (assignment_expression "iVar11 = FUN_0004c840(iVar27)" identifier = (call_expression "FUN_0004c840(iVar27)" identifier (argument_list "(iVar27)" ( identifier )))) ;) (expression_statement "piVar20[iVar27 + 5] = iVar11;" (assignment_expression "piVar20[iVar27 + 5] = iVar11" (subscript_expression "piVar20[iVar27 + 5]" identifier [ (binary_expression "iVar27 + 5" identifier + number_literal) ]) = identifier) ;) (if_statement "if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }" { (expression_statement "piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);" (assignment_expression "piVar20[iVar27 + 5] = *(int *)(iVar15 + 8)" (subscript_expression "piVar20[iVar27 + 5]" identifier [ (binary_expression "iVar27 + 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 "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar18 != iVar27)" ( (binary_expression "iVar18 != iVar27" identifier != identifier) )) ;) })) (do_statement "do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" { (expression_statement "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" identifier = (binary_expression "unaff_EBP + 0x5d8e3" identifier + number_literal)) ;) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\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                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }" { (expression_statement "iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;" (assignment_expression "iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" identifier = (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))) ;) })) (expression_statement "*(int *)(iVar27 + 8) = iVar18;" (assignment_expression "*(int *)(iVar27 + 8) = iVar18" (pointer_expression "*(int *)(iVar27 + 8)" * (cast_expression "(int *)(iVar27 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + 8)" ( (binary_expression "iVar27 + 8" 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_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" identifier (argument_list "(0xfffffff7)" ( number_literal ))) ;) (expression_statement "pbVar4 = param_2 + iVar15 * 4 + 0x14;" (assignment_expression "pbVar4 = 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 "pbVar4[0] = 0xff;" (assignment_expression "pbVar4[0] = 0xff" (subscript_expression "pbVar4[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4[1] = 0xff;" (assignment_expression "pbVar4[1] = 0xff" (subscript_expression "pbVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4[2] = 0xff;" (assignment_expression "pbVar4[2] = 0xff" (subscript_expression "pbVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar4[3] = 0xff;" (assignment_expression "pbVar4[3] = 0xff" (subscript_expression "pbVar4[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 "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "*piVar20 = iVar18 + -1;" (assignment_expression "*piVar20 = iVar18 + -1" (pointer_expression "*piVar20" * identifier) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (if_statement "if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }" if (parenthesized_expression "(iVar18 + -1 == 0)" ( (binary_expression "iVar18 + -1 == 0" (binary_expression "iVar18 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n                FUN_0002a720();\n              }" { (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" identifier (argument_list "()" ( ))) ;) })) }))) }))) (labeled_statement "LAB_0008273c:\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_c4 != 0) {\n            FUN_00043210();\n          }" if (parenthesized_expression "(local_c4 != 0)" ( (binary_expression "local_c4 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00043210();\n          }" { (expression_statement "FUN_00043210();" (call_expression "FUN_00043210()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_00081db1;" goto statement_identifier ;) })) }) (else_clause "else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }" else (compound_statement "{\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }" { (expression_statement "iVar27 = *(int *)(param_2 + 0x3c);" (assignment_expression "iVar27 = *(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_00082701;\n          goto LAB_00081e83;\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_00082701;\n          goto LAB_00081e83;\n        }" { (if_statement "if ((uVar12 & 0x2000) != 0) goto LAB_00082701;" 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_00082701;" goto statement_identifier ;)) (goto_statement "goto LAB_00081e83;" goto statement_identifier ;) })) (expression_statement "pbVar4 = *(byte **)(param_2 + 0x34);" (assignment_expression "pbVar4 = *(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 "pbVar26 = param_2;" (assignment_expression "pbVar26 = param_2" identifier = identifier) ;) (if_statement "if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" if (parenthesized_expression "(pbVar4 == (byte *)0x0)" ( (binary_expression "pbVar4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }" { (labeled_statement "LAB_000830eb:\n          local_d0 = (byte *)0x1;" statement_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)) ;)) (expression_statement "iVar18 = unaff_EBP + 0x29350;" (assignment_expression "iVar18 = unaff_EBP + 0x29350" identifier = (binary_expression "unaff_EBP + 0x29350" identifier + number_literal)) ;) }) (else_clause "else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" else (compound_statement "{\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" { (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)) ;) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" identifier = identifier) ;) (do_statement "do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);" do (compound_statement "{\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          }" { (expression_statement "pbVar26 = pbVar6;" (assignment_expression "pbVar26 = pbVar6" identifier = identifier) ;) (expression_statement "local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));" (assignment_expression "local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0))" identifier = (cast_expression "(byte *)((int)local_d0 + (uint)(iVar27 == 0))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + (uint)(iVar27 == 0))" ( (binary_expression "(int)local_d0 + (uint)(iVar27 == 0)" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + (call_expression "(uint)(iVar27 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )))) )))) ;) (if_statement "if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }" if (parenthesized_expression "(*(int *)(pbVar26 + 0x44) != 0)" ( (binary_expression "*(int *)(pbVar26 + 0x44) != 0" (pointer_expression "*(int *)(pbVar26 + 0x44)" * (cast_expression "(int *)(pbVar26 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 0x44)" ( (binary_expression "pbVar26 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }" { (if_statement "if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;" 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_00081e83;" 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 = pbVar4;" (assignment_expression "local_d0 = pbVar4" identifier = identifier) ;) (goto_statement "goto LAB_000827ee;" goto statement_identifier ;) })) (expression_statement "pbVar6 = *(byte **)(pbVar26 + 0x34);" (assignment_expression "pbVar6 = *(byte **)(pbVar26 + 0x34)" identifier = (pointer_expression "*(byte **)(pbVar26 + 0x34)" * (cast_expression "(byte **)(pbVar26 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x34)" ( (binary_expression "pbVar26 + 0x34" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(*(byte **)(pbVar26 + 0x34) != (byte *)0x0)" ( (binary_expression "*(byte **)(pbVar26 + 0x34) != (byte *)0x0" (pointer_expression "*(byte **)(pbVar26 + 0x34)" * (cast_expression "(byte **)(pbVar26 + 0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar26 + 0x34)" ( (binary_expression "pbVar26 + 0x34" identifier + number_literal) )))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar18 = unaff_EBP + 0x29531;" (assignment_expression "iVar18 = unaff_EBP + 0x29531" identifier = (binary_expression "unaff_EBP + 0x29531" identifier + number_literal)) ;) (if_statement "if (local_d0 == (byte *)0x1) goto LAB_000830eb;" if (parenthesized_expression "(local_d0 == (byte *)0x1)" ( (binary_expression "local_d0 == (byte *)0x1" identifier == (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000830eb;" goto statement_identifier ;)) }))) (expression_statement "FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);" (call_expression "FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18)" identifier (argument_list "(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18)" ( identifier , number_literal , (binary_expression "unaff_EBP + 0x28f9d" identifier + number_literal) , identifier , identifier ))) ;) (do_statement "do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);" do (compound_statement "{\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        }" { (expression_statement "FUN_00079470(0,0,&local_74,1,1);" (call_expression "FUN_00079470(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 ))) ;) (if_statement "if (iVar27 != 0) break;" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(short *)(pbVar26 + 2) = (short)local_d0;" (assignment_expression "*(short *)(pbVar26 + 2) = (short)local_d0" (pointer_expression "*(short *)(pbVar26 + 2)" * (cast_expression "(short *)(pbVar26 + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 2)" ( (binary_expression "pbVar26 + 2" identifier + number_literal) )))) = (cast_expression "(short)local_d0" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "pbVar26 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar26 = *(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 "(pbVar26 != (byte *)0x0)" ( (binary_expression "pbVar26 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) 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_00081db1;" goto statement_identifier ;) })) (expression_statement "cVar3 = *pcVar24;" (assignment_expression "cVar3 = *pcVar24" identifier = (pointer_expression "*pcVar24" * identifier)) ;) (if_statement "if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" if (parenthesized_expression "(cVar3 == -0x7a)" ( (binary_expression "cVar3 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289ee;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289ee;" (assignment_expression "iVar18 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) }) (else_clause "else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" else (if_statement "if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" if (parenthesized_expression "(cVar3 == -0x79)" ( (binary_expression "cVar3 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289e4;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289e4;" (assignment_expression "iVar18 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" else (compound_statement "{\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289f5;" (assignment_expression "iVar18 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) (if_statement "if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }" if (parenthesized_expression "(cVar3 == -0x7b)" ( (binary_expression "cVar3 == -0x7b" identifier == number_literal) )) (compound_statement "{\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }" { (expression_statement "iVar18 = unaff_EBP + 0x289da;" (assignment_expression "iVar18 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) (expression_statement "iVar15 = unaff_EBP + 0x28f97;" (assignment_expression "iVar15 = unaff_EBP + 0x28f97" identifier = (binary_expression "unaff_EBP + 0x28f97" identifier + number_literal)) ;) (goto_statement "goto LAB_00081d80;" goto statement_identifier ;) })) }))))) (expression_statement "iVar15 = unaff_EBP + 0x28f97;" (assignment_expression "iVar15 = unaff_EBP + 0x28f97" identifier = (binary_expression "unaff_EBP + 0x28f97" identifier + number_literal)) ;) }) (else_clause "else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" else (compound_statement "{\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" { (expression_statement "cVar3 = *pcVar24;" (assignment_expression "cVar3 = *pcVar24" identifier = (pointer_expression "*pcVar24" * identifier)) ;) (if_statement "if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" if (parenthesized_expression "(cVar3 == -0x7a)" ( (binary_expression "cVar3 == -0x7a" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289ee;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289ee;" (assignment_expression "iVar18 = unaff_EBP + 0x289ee" identifier = (binary_expression "unaff_EBP + 0x289ee" identifier + number_literal)) ;) }) (else_clause "else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" else (if_statement "if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" if (parenthesized_expression "(cVar3 == -0x79)" ( (binary_expression "cVar3 == -0x79" identifier == number_literal) )) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289e4;\n    }" { (expression_statement "iVar18 = unaff_EBP + 0x289e4;" (assignment_expression "iVar18 = unaff_EBP + 0x289e4" identifier = (binary_expression "unaff_EBP + 0x289e4" identifier + number_literal)) ;) }) (else_clause "else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" else (compound_statement "{\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" { (if_statement "if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }" if (parenthesized_expression "(cVar3 != -0x7b)" ( (binary_expression "cVar3 != -0x7b" identifier != number_literal) )) (compound_statement "{\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }" { (expression_statement "iVar18 = unaff_EBP + 0x289f5;" (assignment_expression "iVar18 = unaff_EBP + 0x289f5" identifier = (binary_expression "unaff_EBP + 0x289f5" identifier + number_literal)) ;) (expression_statement "iVar15 = unaff_EBP + 0x28e22;" (assignment_expression "iVar15 = unaff_EBP + 0x28e22" identifier = (binary_expression "unaff_EBP + 0x28e22" identifier + number_literal)) ;) (goto_statement "goto LAB_00081d80;" goto statement_identifier ;) })) (expression_statement "iVar18 = unaff_EBP + 0x289da;" (assignment_expression "iVar18 = unaff_EBP + 0x289da" identifier = (binary_expression "unaff_EBP + 0x289da" identifier + number_literal)) ;) }))))) (expression_statement "iVar15 = unaff_EBP + 0x28e22;" (assignment_expression "iVar15 = unaff_EBP + 0x28e22" identifier = (binary_expression "unaff_EBP + 0x28e22" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);" statement_identifier : (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18)" identifier (argument_list "(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18)" ( identifier , (binary_expression "unaff_EBP + 0x2b8bb" identifier + number_literal) , 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_00081db1:\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_000a9ea0();" (call_expression "FUN_000a9ea0()" 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) 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 (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 (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) ))))) , 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (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 ( (binary_expression LIT < (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 = 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 ( 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 *)) ) 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 (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 = (binary_expression IDENT + LIT)) ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (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 , 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 (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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (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 (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) ;) (expression_statement (call_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 { (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 , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (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 , 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 , 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 , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 *)) ) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) }))) (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 , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (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 , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , 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 , 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 (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) + IDENT) ))))) ))) < 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 (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) + IDENT) ))))) ))) < 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 = (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 (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) + IDENT) )))))) ;)) (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 { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (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 , 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)) )) (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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , 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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;)) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (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 , 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 , 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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , 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 (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , 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 , LIT ))) ;) (expression_statement (assignment_expression IDENT = 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 , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) , IDENT , IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (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 , LIT , IDENT , 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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , 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) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 , 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) ;) (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 , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , 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 IDENT + LIT) ))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (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 { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + 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 * 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 ))) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , (pointer_expression & IDENT) , LIT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (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)) )) ;) }))) (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 = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) }))))) (expression_statement (assignment_expression IDENT = (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 IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , 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_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)\n\n{\n  ushort *puVar1;\n  uint *puVar2;\n  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000a9ea0();\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00081ce0(undefined4 param_1,byte *param_2,undefined4 *param_3)" (identifier "FUN_00081ce0") (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  char cVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  short sVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  short sVar10;\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  undefined4 uVar21;\n  uint uVar22;\n  short sVar23;\n  int *extraout_ECX;\n  undefined4 extraout_ECX_00;\n  char *pcVar24;\n  int extraout_EDX;\n  int *extraout_EDX_00;\n  int unaff_EBP;\n  uint uVar25;\n  byte *pbVar26;\n  int iVar27;\n  int *piVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  undefined8 uVar30;\n  undefined4 uVar31;\n  byte *local_d0;\n  int *local_c8;\n  int local_c4;\n  int local_c0;\n  uint local_bc;\n  int *local_b4;\n  int local_b0;\n  int local_ac;\n  int *local_a4;\n  int local_9c;\n  int local_94;\n  int local_90;\n  undefined4 local_80;\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 = 0x81ced;\n  uVar30 = FUN_000a9503();\n  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);\n  piVar20 = (int *)uVar30;\n  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }\nLAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);\n  param_3[3] = local_68;\n  param_3[4] = local_64;\n  local_d0 = (byte *)0x1;\nLAB_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }\n                    \n  FUN_000a9ea0();\n}" ({ "{") (declaration "ushort *puVar1;" (type_identifier "ushort") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "short sVar7;" (sized_type_specifier "short" (short "short")) (identifier "sVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined2 uVar9;" (type_identifier "undefined2") (identifier "uVar9") (; ";")) (declaration "short sVar10;" (sized_type_specifier "short" (short "short")) (identifier "sVar10") (; ";")) (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 "undefined4 uVar21;" (type_identifier "undefined4") (identifier "uVar21") (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "short sVar23;" (sized_type_specifier "short" (short "short")) (identifier "sVar23") (; ";")) (declaration "int *extraout_ECX;" (primitive_type "int") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "undefined4 extraout_ECX_00;" (type_identifier "undefined4") (identifier "extraout_ECX_00") (; ";")) (declaration "char *pcVar24;" (primitive_type "char") (pointer_declarator "*pcVar24" (* "*") (identifier "pcVar24")) (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "int *extraout_EDX_00;" (primitive_type "int") (pointer_declarator "*extraout_EDX_00" (* "*") (identifier "extraout_EDX_00")) (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar29;" (primitive_type "bool") (identifier "bVar29") (; ";")) (declaration "undefined8 uVar30;" (type_identifier "undefined8") (identifier "uVar30") (; ";")) (declaration "undefined4 uVar31;" (type_identifier "undefined4") (identifier "uVar31") (; ";")) (declaration "byte *local_d0;" (type_identifier "byte") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (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_b4;" (primitive_type "int") (pointer_declarator "*local_b4" (* "*") (identifier "local_b4")) (; ";")) (declaration "int local_b0;" (primitive_type "int") (identifier "local_b0") (; ";")) (declaration "int local_ac;" (primitive_type "int") (identifier "local_ac") (; ";")) (declaration "int *local_a4;" (primitive_type "int") (pointer_declarator "*local_a4" (* "*") (identifier "local_a4")) (; ";")) (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_80;" (type_identifier "undefined4") (identifier "local_80") (; ";")) (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 = 0x81ced;" (assignment_expression "uStack_14 = 0x81ced" (identifier "uStack_14") (= "=") (number_literal "0x81ced")) (; ";")) (expression_statement "uVar30 = FUN_000a9503();" (assignment_expression "uVar30 = FUN_000a9503()" (identifier "uVar30") (= "=") (call_expression "FUN_000a9503()" (identifier "FUN_000a9503") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);" (assignment_expression "pcVar24 = (char *)((ulonglong)uVar30 >> 0x20)" (identifier "pcVar24") (= "=") (cast_expression "(char *)((ulonglong)uVar30 >> 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar30 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar30")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar20 = (int *)uVar30;" (assignment_expression "piVar20 = (int *)uVar30" (identifier "piVar20") (= "=") (cast_expression "(int *)uVar30" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar30"))) (; ";")) (expression_statement "iVar18 = *(int *)(pcVar24 + 0x34);" (assignment_expression "iVar18 = *(int *)(pcVar24 + 0x34)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(pcVar24 + 0x34)" (* "*") (cast_expression "(int *)(pcVar24 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar24 + 0x34)" (( "(") (binary_expression "pcVar24 + 0x34" (identifier "pcVar24") (+ "+") (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 *)(iVar18 + 0x30) == 0) {\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }\n  else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar18 + 0x30) == 0)" (( "(") (binary_expression "*(int *)(iVar18 + 0x30) == 0" (pointer_expression "*(int *)(iVar18 + 0x30)" (* "*") (cast_expression "(int *)(iVar18 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x30)" (( "(") (binary_expression "iVar18 + 0x30" (identifier "iVar18") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }\n    iVar15 = unaff_EBP + 0x28f97;\n  }" ({ "{") (if_statement "if (*(int *)(iVar18 + 0x3c) == 0) {\n      local_c8 = (int *)piVar20[2];\n      if (local_c8 == (int *)0x0) {\n        local_c8 = (int *)FUN_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar18 + 0x3c) == 0)" (( "(") (binary_expression "*(int *)(iVar18 + 0x3c) == 0" (pointer_expression "*(int *)(iVar18 + 0x3c)" (* "*") (cast_expression "(int *)(iVar18 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (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_000318c0();\n      }\n      if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }\n      local_d0 = (byte *)0x0;\n      param_3[3] = local_68;\n      param_3[4] = local_64;\n      goto LAB_00081db1;\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_000318c0();\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_000318c0();\n      }" ({ "{") (expression_statement "local_c8 = (int *)FUN_000318c0();" (assignment_expression "local_c8 = (int *)FUN_000318c0()" (identifier "local_c8") (= "=") (cast_expression "(int *)FUN_000318c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000318c0()" (identifier "FUN_000318c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}"))) (if_statement "if ((char)local_74 == '\f') {\n        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\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_000315c0(**(undefined4 **)(param_2 + 0x1c),0);\n        local_74 = CONCAT31(local_74._1_3_,0xe);\n      }" ({ "{") (expression_statement "FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);" (call_expression "FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0)" (identifier "FUN_000315c0") (argument_list "(**(undefined4 **)(param_2 + 0x1c),0)" (( "(") (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")) () ")"))))) (, ",") (number_literal "0") () ")"))) (; ";")) (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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }\n      else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }\n        if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }\n      }" ({ "{") (if_statement "if ((uVar12 & 0x2000) == 0) {\nLAB_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\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_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);\n          if (local_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }\n          if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }\n          bVar8 = *param_2;\n          if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }\nLAB_00082b00:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          goto LAB_00081db1;\n        }" ({ "{") (labeled_statement "LAB_00081e83:\n          local_b4 = *(int **)(param_2 + 0x30);" (statement_identifier "LAB_00081e83") (: ":") (expression_statement "local_b4 = *(int **)(param_2 + 0x30);" (assignment_expression "local_b4 = *(int **)(param_2 + 0x30)" (identifier "local_b4") (= "=") (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_b4 != (int *)0x0) {\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\n          }" (if "if") (parenthesized_expression "(local_b4 != (int *)0x0)" (( "(") (binary_expression "local_b4 != (int *)0x0" (identifier "local_b4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar15 = *piVar20;\n            piVar28 = (int *)piVar20[2];\n            iVar18 = piVar20[0xe] + -1;\n            iVar11 = piVar20[0xe] + -2;\n            piVar20[0xe] = iVar11;\n            iVar27 = *(int *)(param_2 + 0x34);\n            uVar12 = (uint)*param_2;\n            local_b0 = *local_b4;\n            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }\n            piVar14 = (int *)FUN_0002e2d0();\n            if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }\n            *(int **)(param_2 + 0x30) = local_b4;\n            uVar16 = FUN_00053100();\n            *(undefined4 *)(iVar27 + 0x30) = uVar16;\n            if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }\n            }\n            param_2[0x34] = 0;\n            param_2[0x35] = 0;\n            param_2[0x36] = 0;\n            param_2[0x37] = 0;\n            *(undefined4 *)(iVar27 + 0x38) = 0;\n            FUN_00053b50(unaff_EBP + 0x289fb);\n            if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }\n            FUN_000781b0();\n            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 0;\n              local_9c = 0;\n            }\n            if (*(int *)(param_2 + 0x3c) != 0) {\n              FUN_000432e0();\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            bVar8 = *param_2;\n            iVar13 = unaff_EBP + 0x289ee;\n            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            *(int *)(iVar27 + 8) = local_9c;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);\n            FUN_00070950();\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            if (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }\n            iVar13 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 0x14;\n            }\n            *(int *)(iVar13 + 8) = piVar28[0x1a];\n            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);\n            uVar16 = *(undefined4 *)(param_2 + 8);\n            uVar21 = *(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_94;\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);\n            FUN_00070950();\n            *(undefined4 *)(param_2 + 0xc) = uVar21;\n            *(undefined4 *)(param_2 + 8) = uVar16;\n            FUN_000315c0(0,0);\n            iVar13 = piVar28[3];\n            *(undefined1 *)(iVar13 + 0x13) = 0;\n            *(undefined4 *)(iVar13 + 0x1c) = 0;\n            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);\n            local_80 = 0;\n            if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }\n            if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }\n            iVar15 = iVar18;\n            local_90 = iVar18;\n            if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }\n            if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }\n            iVar18 = piVar28[0x1a];\n            if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\n            }\n            FUN_000315c0(local_ac,0);\n            FUN_000315c0(iVar11,0);\n            iVar15 = piVar28[0x1a] + -1;\n            if (-1 < iVar17) {\n              iVar15 = iVar17;\n            }\n            iVar11 = unaff_EBP + 0x5d8e3;\n            if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar11 = piVar28[0x19] + iVar15 * 0x14;\n            }\n            *(int *)(iVar11 + 8) = piVar28[0x1a];\n            FUN_000315c0(local_90,0);\n            FUN_000315c0(local_ac,0);\n            FUN_00031430();\n            FUN_000315c0(0,0);\n            FUN_00032090(0xfffffff1);\n            FUN_000315c0(local_30,local_b0);\n            FUN_00032090(0xfffffff7);\n            if (0 < piVar28[0x1a]) {\n              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;\n            }\n            FUN_000315c0(local_a4,iVar18);\n            FUN_00031430();\n            if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\n            }\n            *(int *)(param_2 + 0x34) = iVar27;\n            *(byte **)(iVar27 + 0x38) = param_2;\n            iVar18 = piVar20[0x36];\n            if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }\n            piVar20[0x36] = iVar18;\n            local_d0 = (byte *)(uint)(piVar20[9] != 0);\n            goto LAB_00081db1;\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 "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = piVar20[0xe] + -1" (identifier "iVar18") (= "=") (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 "iVar27 = *(int *)(param_2 + 0x34);" (assignment_expression "iVar27 = *(int *)(param_2 + 0x34)" (identifier "iVar27") (= "=") (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 "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 "local_b0 = *local_b4;" (assignment_expression "local_b0 = *local_b4" (identifier "local_b0") (= "=") (pointer_expression "*local_b4" (* "*") (identifier "local_b4"))) (; ";")) (if_statement "if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))) {\n              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }" (if "if") (parenthesized_expression "(((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c)))" (( "(") (binary_expression "((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&\n               (0 < **(int **)(param_2 + 0x1c))" (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 "(0 < **(int **)(param_2 + 0x1c))" (( "(") (binary_expression "0 < **(int **)(param_2 + 0x1c)" (number_literal "0") (< "<") (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              uVar25 = 1;\n              do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));\n            }" ({ "{") (expression_statement "uVar25 = 1;" (assignment_expression "uVar25 = 1" (identifier "uVar25") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));" (do "do") (compound_statement "{\n                if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }\n                uVar25 = uVar25 + 1;\n              }" ({ "{") (if_statement "if (local_b0 < 1) {\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }\n                else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" (if "if") (parenthesized_expression "(local_b0 < 1)" (( "(") (binary_expression "local_b0 < 1" (identifier "local_b0") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                  if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }\n                }" ({ "{") (if_statement "if (local_b0 == 0) {\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" (if "if") (parenthesized_expression "(local_b0 == 0)" (( "(") (binary_expression "local_b0 == 0" (identifier "local_b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00081f4a:\n                    local_3c = 0;\n                    local_38 = 0;\n                    iVar13 = FUN_0002ef20(0);\n                    if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\n                    }\n                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;\n                    *(uint *)(iVar13 + 8) = uVar25;\n                    local_b4 = (int *)FUN_000449c0();\n                    *(int **)(param_2 + 0x30) = local_b4;\n                    if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }\n                  }" ({ "{") (labeled_statement "LAB_00081f4a:\n                    local_3c = 0;" (statement_identifier "LAB_00081f4a") (: ":") (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_0002ef20(0);" (assignment_expression "iVar13 = FUN_0002ef20(0)" (identifier "iVar13") (= "=") (call_expression "FUN_0002ef20(0)" (identifier "FUN_0002ef20") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\n                      local_d0 = (byte *)0x7;\n                      goto LAB_00081db1;\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_00081db1;\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_00081db1;" (goto "goto") (statement_identifier "LAB_00081db1") (; ";")) (} "}"))) (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) = uVar25;" (assignment_expression "*(uint *)(iVar13 + 8) = uVar25" (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 "uVar25")) (; ";")) (expression_statement "local_b4 = (int *)FUN_000449c0();" (assignment_expression "local_b4 = (int *)FUN_000449c0()" (identifier "local_b4") (= "=") (cast_expression "(int *)FUN_000449c0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000449c0()" (identifier "FUN_000449c0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(int **)(param_2 + 0x30) = local_b4;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b4" (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_b4")) (; ";")) (if_statement "if (local_b4 != (int *)0x0) {\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }" (if "if") (parenthesized_expression "(local_b4 != (int *)0x0)" (( "(") (binary_expression "local_b4 != (int *)0x0" (identifier "local_b4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;\n                      local_b0 = local_b0 + 1;\n                    }" ({ "{") (expression_statement "*(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;" (assignment_expression "*(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25" (pointer_expression "*(short *)(local_b4 + local_b0 * 4 + 4)" (* "*") (cast_expression "(short *)(local_b4 + local_b0 * 4 + 4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b4 + local_b0 * 4 + 4)" (( "(") (binary_expression "local_b4 + local_b0 * 4 + 4" (binary_expression "local_b4 + local_b0 * 4" (identifier "local_b4") (+ "+") (binary_expression "local_b0 * 4" (identifier "local_b0") (* "*") (number_literal "4"))) (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(short)uVar25" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar25"))) (; ";")) (expression_statement "local_b0 = local_b0 + 1;" (assignment_expression "local_b0 = local_b0 + 1" (identifier "local_b0") (= "=") (binary_expression "local_b0 + 1" (identifier "local_b0") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" (else "else") (if_statement "if (uVar25 != *(ushort *)(local_b4 + 4)) {\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" (if "if") (parenthesized_expression "(uVar25 != *(ushort *)(local_b4 + 4))" (( "(") (binary_expression "uVar25 != *(ushort *)(local_b4 + 4)" (identifier "uVar25") (!= "!=") (pointer_expression "*(ushort *)(local_b4 + 4)" (* "*") (cast_expression "(ushort *)(local_b4 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b4 + 4)" (( "(") (binary_expression "local_b4 + 4" (identifier "local_b4") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n                  iVar13 = 0;\n                  piVar14 = local_b4 + 1;\n                  do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);\n                }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar14 = local_b4 + 1;" (assignment_expression "piVar14 = local_b4 + 1" (identifier "piVar14") (= "=") (binary_expression "local_b4 + 1" (identifier "local_b4") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\n                    puVar1 = (ushort *)(piVar14 + 7);\n                    piVar14 = piVar14 + 4;\n                  } while (*puVar1 != uVar25);" (do "do") (compound_statement "{\n                    iVar13 = iVar13 + 1;\n                    if (iVar13 == local_b0) goto LAB_00081f4a;\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 == local_b0) goto LAB_00081f4a;" (if "if") (parenthesized_expression "(iVar13 == local_b0)" (( "(") (binary_expression "iVar13 == local_b0" (identifier "iVar13") (== "==") (identifier "local_b0")) () ")")) (goto_statement "goto LAB_00081f4a;" (goto "goto") (statement_identifier "LAB_00081f4a") (; ";"))) (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 != uVar25)" (( "(") (binary_expression "*puVar1 != uVar25" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (!= "!=") (identifier "uVar25")) () ")")) (; ";")) (} "}"))))) (expression_statement "uVar25 = uVar25 + 1;" (assignment_expression "uVar25 = uVar25 + 1" (identifier "uVar25") (= "=") (binary_expression "uVar25 + 1" (identifier "uVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)))" (( "(") (binary_expression "(*(char *)(iVar15 + 0x4d) == '\0') &&\n                      ((int)uVar25 <= **(int **)(param_2 + 0x1c))" (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 "((int)uVar25 <= **(int **)(param_2 + 0x1c))" (( "(") (binary_expression "(int)uVar25 <= **(int **)(param_2 + 0x1c)" (cast_expression "(int)uVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar25")) (<= "<=") (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 "piVar14 = (int *)FUN_0002e2d0();" (assignment_expression "piVar14 = (int *)FUN_0002e2d0()" (identifier "piVar14") (= "=") (cast_expression "(int *)FUN_0002e2d0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002e2d0()" (identifier "FUN_0002e2d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar14 != (int *)0x0) {\n              *piVar14 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\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 = local_b0;\n              if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }\n              FUN_0004c930();\n            }" ({ "{") (expression_statement "*piVar14 = local_b0;" (assignment_expression "*piVar14 = local_b0" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "local_b0")) (; ";")) (if_statement "if (0 < local_b0) {\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);\n              }" (if "if") (parenthesized_expression "(0 < local_b0)" (( "(") (binary_expression "0 < local_b0" (number_literal "0") (< "<") (identifier "local_b0")) () ")")) (compound_statement "{\n                iVar15 = 0;\n                do {\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 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_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                } while (local_b0 * 4 != iVar15);" (do "do") (compound_statement "{\n                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;\n                  iVar15 = iVar15 + 4;\n                }" ({ "{") (expression_statement "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;" (assignment_expression "*(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + 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_b4 + iVar15 + 4) - 1" (pointer_expression "*(ushort *)(local_b4 + iVar15 + 4)" (* "*") (cast_expression "(ushort *)(local_b4 + iVar15 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b4 + iVar15 + 4)" (( "(") (binary_expression "local_b4 + iVar15 + 4" (binary_expression "local_b4 + iVar15" (identifier "local_b4") (+ "+") (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 "(local_b0 * 4 != iVar15)" (( "(") (binary_expression "local_b0 * 4 != iVar15" (binary_expression "local_b0 * 4" (identifier "local_b0") (* "*") (number_literal "4")) (!= "!=") (identifier "iVar15")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_0004c930();" (call_expression "FUN_0004c930()" (identifier "FUN_0004c930") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int **)(param_2 + 0x30) = local_b4;" (assignment_expression "*(int **)(param_2 + 0x30) = local_b4" (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_b4")) (; ";")) (expression_statement "uVar16 = FUN_00053100();" (assignment_expression "uVar16 = FUN_00053100()" (identifier "uVar16") (= "=") (call_expression "FUN_00053100()" (identifier "FUN_00053100") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar27 + 0x30) = uVar16;" (assignment_expression "*(undefined4 *)(iVar27 + 0x30) = uVar16" (pointer_expression "*(undefined4 *)(iVar27 + 0x30)" (* "*") (cast_expression "(undefined4 *)(iVar27 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x30)" (( "(") (binary_expression "iVar27 + 0x30" (identifier "iVar27") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (uVar12 == 0x85) {\n              local_a4 = (int *)0x0;\n              local_90 = 0;\n            }\n            else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_a4 = (int *)0x0;\n              local_90 = 0;\n            }" ({ "{") (expression_statement "local_a4 = (int *)0x0;" (assignment_expression "local_a4 = (int *)0x0" (identifier "local_a4") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              iVar15 = **(int **)(param_2 + 0x1c);\n              local_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_90 = piVar20[0xb] + 1;\n              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];\n              FUN_000315c0(local_90,0);\n              local_a4 = (int *)FUN_00031ab0();\n              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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_90 = piVar20[0xb] + 1;" (assignment_expression "local_90 = piVar20[0xb] + 1" (identifier "local_90") (= "=") (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_000315c0(local_90,0);" (call_expression "FUN_000315c0(local_90,0)" (identifier "FUN_000315c0") (argument_list "(local_90,0)" (( "(") (identifier "local_90") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_a4 = (int *)FUN_00031ab0();" (assignment_expression "local_a4 = (int *)FUN_00031ab0()" (identifier "local_a4") (= "=") (cast_expression "(int *)FUN_00031ab0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00031ab0()" (identifier "FUN_00031ab0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if ((local_a4 != (int *)0x0) && (0 < iVar15)) {\n                iVar13 = 0;\n                do {\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);\n              }" (if "if") (parenthesized_expression "((local_a4 != (int *)0x0) && (0 < iVar15))" (( "(") (binary_expression "(local_a4 != (int *)0x0) && (0 < iVar15)" (parenthesized_expression "(local_a4 != (int *)0x0)" (( "(") (binary_expression "local_a4 != (int *)0x0" (identifier "local_a4") (!= "!=") (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                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[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                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                } while (iVar15 != iVar13);" (do "do") (compound_statement "{\n                  iVar17 = FUN_0004c840(iVar13);\n                  local_a4[iVar13 + 5] = iVar17;\n                  *(undefined1 *)(local_a4[4] + iVar13) = 0;\n                  iVar13 = iVar13 + 1;\n                }" ({ "{") (expression_statement "iVar17 = FUN_0004c840(iVar13);" (assignment_expression "iVar17 = FUN_0004c840(iVar13)" (identifier "iVar17") (= "=") (call_expression "FUN_0004c840(iVar13)" (identifier "FUN_0004c840") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (; ";")) (expression_statement "local_a4[iVar13 + 5] = iVar17;" (assignment_expression "local_a4[iVar13 + 5] = iVar17" (subscript_expression "local_a4[iVar13 + 5]" (identifier "local_a4") ([ "[") (binary_expression "iVar13 + 5" (identifier "iVar13") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "*(undefined1 *)(local_a4[4] + iVar13) = 0;" (assignment_expression "*(undefined1 *)(local_a4[4] + iVar13) = 0" (pointer_expression "*(undefined1 *)(local_a4[4] + iVar13)" (* "*") (cast_expression "(undefined1 *)(local_a4[4] + iVar13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a4[4] + iVar13)" (( "(") (binary_expression "local_a4[4] + iVar13" (subscript_expression "local_a4[4]" (identifier "local_a4") ([ "[") (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 "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 *)(iVar27 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar27 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar27 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar27 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x38)" (( "(") (binary_expression "iVar27 + 0x38" (identifier "iVar27") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00053b50(unaff_EBP + 0x289fb);" (call_expression "FUN_00053b50(unaff_EBP + 0x289fb)" (identifier "FUN_00053b50") (argument_list "(unaff_EBP + 0x289fb)" (( "(") (binary_expression "unaff_EBP + 0x289fb" (identifier "unaff_EBP") (+ "+") (number_literal "0x289fb")) () ")"))) (; ";")) (if_statement "if (*(int *)(iVar27 + 0x34) == 0) {\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }" (if "if") (parenthesized_expression "(*(int *)(iVar27 + 0x34) == 0)" (( "(") (binary_expression "*(int *)(iVar27 + 0x34) == 0" (pointer_expression "*(int *)(iVar27 + 0x34)" (* "*") (cast_expression "(int *)(iVar27 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 0x34)" (( "(") (binary_expression "iVar27 + 0x34" (identifier "iVar27") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00053b50(unaff_EBP + 0x289fb);\n            }" ({ "{") (expression_statement "FUN_00053b50(unaff_EBP + 0x289fb);" (call_expression "FUN_00053b50(unaff_EBP + 0x289fb)" (identifier "FUN_00053b50") (argument_list "(unaff_EBP + 0x289fb)" (( "(") (binary_expression "unaff_EBP + 0x289fb" (identifier "unaff_EBP") (+ "+") (number_literal "0x289fb")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000781b0();" (call_expression "FUN_000781b0()" (identifier "FUN_000781b0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {\n              local_9c = piVar20[0xb] + 1;\n              local_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\n            }\n            else {\n              local_94 = 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_94 = piVar20[0xb] + 2;\n              piVar20[0xb] = local_94;\n              FUN_000315c0(local_9c,0);\n              FUN_000315c0(local_94,0);\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_94 = piVar20[0xb] + 2;" (assignment_expression "local_94 = piVar20[0xb] + 2" (identifier "local_94") (= "=") (binary_expression "piVar20[0xb] + 2" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar20[0xb] = local_94;" (assignment_expression "piVar20[0xb] = local_94" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_94")) (; ";")) (expression_statement "FUN_000315c0(local_9c,0);" (call_expression "FUN_000315c0(local_9c,0)" (identifier "FUN_000315c0") (argument_list "(local_9c,0)" (( "(") (identifier "local_9c") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_94,0);" (call_expression "FUN_000315c0(local_94,0)" (identifier "FUN_000315c0") (argument_list "(local_94,0)" (( "(") (identifier "local_94") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n              local_94 = 0;\n              local_9c = 0;\n            }" (else "else") (compound_statement "{\n              local_94 = 0;\n              local_9c = 0;\n            }" ({ "{") (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (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_000432e0();\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_000432e0();\n            }" ({ "{") (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" (identifier "FUN_000432e0") (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 "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" (identifier "bVar8") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar13 = unaff_EBP + 0x289ee;" (assignment_expression "iVar13 = unaff_EBP + 0x289ee" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x289ee" (identifier "unaff_EBP") (+ "+") (number_literal "0x289ee"))) (; ";")) (if_statement "if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }" (if "if") (parenthesized_expression "((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87))" (( "(") (binary_expression "(bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (parenthesized_expression "(bVar8 != 0x86)" (( "(") (binary_expression "bVar8 != 0x86" (identifier "bVar8") (!= "!=") (number_literal "0x86")) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (( "(") (comma_expression "iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87" (assignment_expression "iVar13 = unaff_EBP + 0x289e4" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x289e4" (identifier "unaff_EBP") (+ "+") (number_literal "0x289e4"))) (, ",") (binary_expression "bVar8 != 0x87" (identifier "bVar8") (!= "!=") (number_literal "0x87"))) () ")"))) () ")")) (compound_statement "{\n              iVar13 = unaff_EBP + 0x289da;\n              if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }\n            }" ({ "{") (expression_statement "iVar13 = unaff_EBP + 0x289da;" (assignment_expression "iVar13 = unaff_EBP + 0x289da" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x289da" (identifier "unaff_EBP") (+ "+") (number_literal "0x289da"))) (; ";")) (if_statement "if (bVar8 != 0x85) {\n                iVar13 = unaff_EBP + 0x289f5;\n              }" (if "if") (parenthesized_expression "(bVar8 != 0x85)" (( "(") (binary_expression "bVar8 != 0x85" (identifier "bVar8") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                iVar13 = unaff_EBP + 0x289f5;\n              }" ({ "{") (expression_statement "iVar13 = unaff_EBP + 0x289f5;" (assignment_expression "iVar13 = unaff_EBP + 0x289f5" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x289f5" (identifier "unaff_EBP") (+ "+") (number_literal "0x289f5"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fc9,iVar13)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fc9" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fc9")) (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1)" (identifier "iVar17") (= "=") (call_expression "FUN_000315c0(0,piVar28[0x1a] + 1)" (identifier "FUN_000315c0") (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 *)(iVar27 + 8) = local_9c;" (assignment_expression "*(int *)(iVar27 + 8) = local_9c" (pointer_expression "*(int *)(iVar27 + 8)" (* "*") (cast_expression "(int *)(iVar27 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 8)" (( "(") (binary_expression "iVar27 + 8" (identifier "iVar27") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "local_9c")) (; ";")) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fd4)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fd4" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fd4")) () ")"))) (; ";")) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "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 (iVar17 < 0) {\n              iVar17 = piVar28[0x1a] + -1;\n            }" (if "if") (parenthesized_expression "(iVar17 < 0)" (( "(") (binary_expression "iVar17 < 0" (identifier "iVar17") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              iVar17 = piVar28[0x1a] + -1;\n            }" ({ "{") (expression_statement "iVar17 = piVar28[0x1a] + -1;" (assignment_expression "iVar17 = piVar28[0x1a] + -1" (identifier "iVar17") (= "=") (binary_expression "piVar28[0x1a] + -1" (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar13 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar13 = unaff_EBP + 0x5d8e3" (identifier "iVar13") (= "=") (binary_expression "unaff_EBP + 0x5d8e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x5d8e3"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n              iVar13 = piVar28[0x19] + iVar17 * 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] + iVar17 * 0x14;\n            }" ({ "{") (expression_statement "iVar13 = piVar28[0x19] + iVar17 * 0x14;" (assignment_expression "iVar13 = piVar28[0x19] + iVar17 * 0x14" (identifier "iVar13") (= "=") (binary_expression "piVar28[0x19] + iVar17 * 0x14" (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar17 * 0x14" (identifier "iVar17") (* "*") (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 "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);" (assignment_expression "iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1)" (identifier "iVar17") (= "=") (call_expression "FUN_000315c0(0,piVar28[0x1a] + 1)" (identifier "FUN_000315c0") (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 "uVar21 = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "uVar21 = *(undefined4 *)(param_2 + 0xc)" (identifier "uVar21") (= "=") (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_94;" (assignment_expression "*(int *)(param_2 + 8) = local_94" (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_94")) (; ";")) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fd9)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fd9" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fd9")) () ")"))) (; ";")) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0xc) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = uVar21" (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 "uVar21")) (; ";")) (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_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "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_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);" (assignment_expression "uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" (identifier "uVar16") (= "=") (call_expression "FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" (identifier "FUN_00032740") (argument_list "(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18)" (( "(") (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_90") (, ",") (identifier "local_a4") (, ",") (identifier "iVar18") () ")")))) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar12 - 0x84 < 2) {\n              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\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_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);\n            }" ({ "{") (expression_statement "local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18);" (assignment_expression "local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" (identifier "local_80") (= "=") (call_expression "FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" (identifier "FUN_00032740") (argument_list "(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,\n                                      iVar18)" (( "(") (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_90") (, ",") (identifier "local_a4") (, ",") (identifier "iVar18") () ")")))) (; ";")) (} "}"))) (if_statement "if ((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {\n              FUN_0002a720();\n            }" (if "if") (parenthesized_expression "((local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0))" (( "(") (binary_expression "(local_a4 != (int *)0x0) &&\n               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)" (parenthesized_expression "(local_a4 != (int *)0x0)" (( "(") (binary_expression "local_a4 != (int *)0x0" (identifier "local_a4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)" (( "(") (comma_expression "iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "iVar15 = *local_a4" (identifier "iVar15") (= "=") (pointer_expression "*local_a4" (* "*") (identifier "local_a4"))) (, ",") (comma_expression "*local_a4 = iVar15 + -1, iVar15 + -1 == 0" (assignment_expression "*local_a4 = iVar15 + -1" (pointer_expression "*local_a4" (* "*") (identifier "local_a4")) (= "=") (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_0002a720();\n            }" ({ "{") (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" (identifier "FUN_0002a720") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" (identifier "iVar15") (= "=") (identifier "iVar18")) (; ";")) (expression_statement "local_90 = iVar18;" (assignment_expression "local_90 = iVar18" (identifier "local_90") (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (1 < uVar12 - 0x86) {\n              iVar15 = FUN_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\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_000315c0(local_80,0);\n              local_90 = FUN_000315c0(iVar18,0);\n              FUN_000315c0(iVar15,0);\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n            }" ({ "{") (expression_statement "iVar15 = FUN_000315c0(local_80,0);" (assignment_expression "iVar15 = FUN_000315c0(local_80,0)" (identifier "iVar15") (= "=") (call_expression "FUN_000315c0(local_80,0)" (identifier "FUN_000315c0") (argument_list "(local_80,0)" (( "(") (identifier "local_80") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_90 = FUN_000315c0(iVar18,0);" (assignment_expression "local_90 = FUN_000315c0(iVar18,0)" (identifier "local_90") (= "=") (call_expression "FUN_000315c0(iVar18,0)" (identifier "FUN_000315c0") (argument_list "(iVar18,0)" (( "(") (identifier "iVar18") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" (identifier "FUN_000315c0") (argument_list "(iVar15,0)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" (identifier "uVar9") (= "=") (call_expression "FUN_00026b50()" (identifier "FUN_00026b50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 "uVar9")) (; ";")) (} "}"))) (if_statement "if (uVar12 == 0x87) {\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }\n            else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" (if "if") (parenthesized_expression "(uVar12 == 0x87)" (( "(") (binary_expression "uVar12 == 0x87" (identifier "uVar12") (== "==") (number_literal "0x87")) () ")")) (compound_statement "{\n              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              local_ac = iVar15;\n            }" ({ "{") (if_statement "if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);\n              }" (if "if") (parenthesized_expression "(*(short *)(iVar27 + 2) < *(short *)(param_2 + 2))" (( "(") (binary_expression "*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar27 + 2)" (* "*") (cast_expression "(short *)(iVar27 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 2)" (( "(") (binary_expression "iVar27 + 2" (identifier "iVar27") (+ "+") (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 *)(iVar27 + 2);\n              }" ({ "{") (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar27 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar27 + 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 *)(iVar27 + 2)" (* "*") (cast_expression "(short *)(iVar27 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 2)" (( "(") (binary_expression "iVar27 + 2" (identifier "iVar27") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_a4 = (int *)FUN_000315c0(uVar16,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(uVar16,0)" (identifier "local_a4") (= "=") (cast_expression "(int *)FUN_000315c0(uVar16,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000315c0(uVar16,0)" (identifier "FUN_000315c0") (argument_list "(uVar16,0)" (( "(") (identifier "uVar16") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" (identifier "FUN_000315c0") (argument_list "(iVar15,0)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" (identifier "FUN_000315c0") (argument_list "(iVar11,0)" (( "(") (identifier "iVar11") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_ac = iVar15;" (assignment_expression "local_ac = iVar15" (identifier "local_ac") (= "=") (identifier "iVar15")) (; ";")) (} "}")) (else_clause "else {\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" (else "else") (compound_statement "{\n              local_ac = FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar18,0);\n              FUN_000315c0(local_ac,0);\n              local_a4 = (int *)FUN_000315c0(uVar16,0);\n              FUN_000315c0(iVar15,0);\n              FUN_000315c0(iVar11,0);\n              if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }\n            }" ({ "{") (expression_statement "local_ac = FUN_000315c0(uVar16,0);" (assignment_expression "local_ac = FUN_000315c0(uVar16,0)" (identifier "local_ac") (= "=") (call_expression "FUN_000315c0(uVar16,0)" (identifier "FUN_000315c0") (argument_list "(uVar16,0)" (( "(") (identifier "uVar16") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_000315c0(iVar18,0);" (call_expression "FUN_000315c0(iVar18,0)" (identifier "FUN_000315c0") (argument_list "(iVar18,0)" (( "(") (identifier "iVar18") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" (identifier "FUN_000315c0") (argument_list "(local_ac,0)" (( "(") (identifier "local_ac") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_a4 = (int *)FUN_000315c0(uVar16,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(uVar16,0)" (identifier "local_a4") (= "=") (cast_expression "(int *)FUN_000315c0(uVar16,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000315c0(uVar16,0)" (identifier "FUN_000315c0") (argument_list "(uVar16,0)" (( "(") (identifier "uVar16") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "FUN_000315c0(iVar15,0);" (call_expression "FUN_000315c0(iVar15,0)" (identifier "FUN_000315c0") (argument_list "(iVar15,0)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" (identifier "FUN_000315c0") (argument_list "(iVar11,0)" (( "(") (identifier "iVar11") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (uVar12 != 0x85) {\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }" (if "if") (parenthesized_expression "(uVar12 != 0x85)" (( "(") (binary_expression "uVar12 != 0x85" (identifier "uVar12") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                local_a4 = (int *)FUN_000315c0(iVar15,0);\n                FUN_000315c0(iVar11,0);\n              }" ({ "{") (expression_statement "local_a4 = (int *)FUN_000315c0(iVar15,0);" (assignment_expression "local_a4 = (int *)FUN_000315c0(iVar15,0)" (identifier "local_a4") (= "=") (cast_expression "(int *)FUN_000315c0(iVar15,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000315c0(iVar15,0)" (identifier "FUN_000315c0") (argument_list "(iVar15,0)" (( "(") (identifier "iVar15") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" (identifier "FUN_000315c0") (argument_list "(iVar11,0)" (( "(") (identifier "iVar11") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar18 = piVar28[0x1a];" (assignment_expression "iVar18 = piVar28[0x1a]" (identifier "iVar18") (= "=") (subscript_expression "piVar28[0x1a]" (identifier "piVar28") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (uVar12 - 0x84 < 2) {\n              FUN_000315c0(local_80,0);\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_000315c0(local_80,0);\n            }" ({ "{") (expression_statement "FUN_000315c0(local_80,0);" (call_expression "FUN_000315c0(local_80,0)" (identifier "FUN_000315c0") (argument_list "(local_80,0)" (( "(") (identifier "local_80") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" (identifier "FUN_000315c0") (argument_list "(local_ac,0)" (( "(") (identifier "local_ac") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(iVar11,0);" (call_expression "FUN_000315c0(iVar11,0)" (identifier "FUN_000315c0") (argument_list "(iVar11,0)" (( "(") (identifier "iVar11") (, ",") (number_literal "0") () ")"))) (; ";")) (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 < iVar17) {\n              iVar15 = iVar17;\n            }" (if "if") (parenthesized_expression "(-1 < iVar17)" (( "(") (binary_expression "-1 < iVar17" (number_literal "-1") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n              iVar15 = iVar17;\n            }" ({ "{") (expression_statement "iVar15 = iVar17;" (assignment_expression "iVar15 = iVar17" (identifier "iVar15") (= "=") (identifier "iVar17")) (; ";")) (} "}"))) (expression_statement "iVar11 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar11 = unaff_EBP + 0x5d8e3" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x5d8e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x5d8e3"))) (; ";")) (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_000315c0(local_90,0);" (call_expression "FUN_000315c0(local_90,0)" (identifier "FUN_000315c0") (argument_list "(local_90,0)" (( "(") (identifier "local_90") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_ac,0);" (call_expression "FUN_000315c0(local_ac,0)" (identifier "FUN_000315c0") (argument_list "(local_ac,0)" (( "(") (identifier "local_ac") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00032090(0xfffffff1);" (call_expression "FUN_00032090(0xfffffff1)" (identifier "FUN_00032090") (argument_list "(0xfffffff1)" (( "(") (number_literal "0xfffffff1") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_30,local_b0);" (call_expression "FUN_000315c0(local_30,local_b0)" (identifier "FUN_000315c0") (argument_list "(local_30,local_b0)" (( "(") (identifier "local_30") (, ",") (identifier "local_b0") () ")"))) (; ";")) (expression_statement "FUN_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" (identifier "FUN_00032090") (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_000315c0(local_a4,iVar18);" (call_expression "FUN_000315c0(local_a4,iVar18)" (identifier "FUN_000315c0") (argument_list "(local_a4,iVar18)" (( "(") (identifier "local_a4") (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(int *)(param_2 + 0x34) != 0) {\n              FUN_00043210();\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_00043210();\n            }" ({ "{") (expression_statement "FUN_00043210();" (call_expression "FUN_00043210()" (identifier "FUN_00043210") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_2 + 0x34) = iVar27;" (assignment_expression "*(int *)(param_2 + 0x34) = iVar27" (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 "iVar27")) (; ";")) (expression_statement "*(byte **)(iVar27 + 0x38) = param_2;" (assignment_expression "*(byte **)(iVar27 + 0x38) = param_2" (pointer_expression "*(byte **)(iVar27 + 0x38)" (* "*") (cast_expression "(byte **)(iVar27 + 0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar27 + 0x38)" (( "(") (binary_expression "iVar27 + 0x38" (identifier "iVar27") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar18 = piVar20[0x36];" (assignment_expression "iVar18 = piVar20[0x36]" (identifier "iVar18") (= "=") (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar18 != 0) {\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(int *)(iVar15 + 8);\n            }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              piVar28 = (int *)piVar20[2];\n              if (iVar18 < 0) {\n                iVar18 = piVar28[0x1a] + -1;\n              }\n              iVar15 = unaff_EBP + 0x5d8e3;\n              if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }\n              iVar18 = *(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 (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 "iVar15 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar15 = unaff_EBP + 0x5d8e3" (identifier "iVar15") (= "=") (binary_expression "unaff_EBP + 0x5d8e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x5d8e3"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                iVar15 = 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                iVar15 = piVar28[0x19] + iVar18 * 0x14;\n              }" ({ "{") (expression_statement "iVar15 = piVar28[0x19] + iVar18 * 0x14;" (assignment_expression "iVar15 = piVar28[0x19] + iVar18 * 0x14" (identifier "iVar15") (= "=") (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 "iVar18 = *(int *)(iVar15 + 8);" (assignment_expression "iVar18 = *(int *)(iVar15 + 8)" (identifier "iVar18") (= "=") (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] = iVar18;" (assignment_expression "piVar20[0x36] = iVar18" (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (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_00081db1;" (goto "goto") (statement_identifier "LAB_00081db1") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar18 + 0x34) == 0) {\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar18 + 0x34) == 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")) () ")")) (compound_statement "{\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);\n            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);\n          }" ({ "{") (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fdf)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fdf" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fdf")) () ")"))) (; ";")) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fee)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fee" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fee")) () ")"))) (; ";")) (} "}"))) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" (identifier "bVar8") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (bVar8 == 0x85) {\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }\n          else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" (if "if") (parenthesized_expression "(bVar8 == 0x85)" (( "(") (binary_expression "bVar8 == 0x85" (identifier "bVar8") (== "==") (number_literal "0x85")) () ")")) (compound_statement "{\n            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);\n            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);\n            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);\n            local_d0 = (byte *)FUN_00070950();\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }\n          }" ({ "{") (expression_statement "*(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);" (assignment_expression "*(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8)" (pointer_expression "*(undefined4 *)(iVar18 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 8)" (( "(") (binary_expression "iVar18 + 8" (identifier "iVar18") (+ "+") (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 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);" (assignment_expression "*(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc)" (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (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 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);" (assignment_expression "*(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c)" (pointer_expression "*(undefined4 *)(iVar18 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (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_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_00070950()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\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_c0 = *(int *)(iVar18 + 8);\n              uVar16 = *(undefined4 *)(iVar18 + 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_c0;\n              *(undefined4 *)(param_2 + 0xc) = uVar16;\n              if (local_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              uVar9 = FUN_00026b50();\n              *(undefined2 *)(param_2 + 2) = uVar9;\n              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }\n              if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }\n              goto LAB_00082ed0;\n            }" ({ "{") (expression_statement "local_c0 = *(int *)(iVar18 + 8);" (assignment_expression "local_c0 = *(int *)(iVar18 + 8)" (identifier "local_c0") (= "=") (pointer_expression "*(int *)(iVar18 + 8)" (* "*") (cast_expression "(int *)(iVar18 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 8)" (( "(") (binary_expression "iVar18 + 8" (identifier "iVar18") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(iVar18 + 0xc);" (assignment_expression "uVar16 = *(undefined4 *)(iVar18 + 0xc)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(iVar18 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar18 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xc)" (( "(") (binary_expression "iVar18 + 0xc" (identifier "iVar18") (+ "+") (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_c0;" (assignment_expression "*(int *)(param_2 + 8) = local_c0" (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_c0")) (; ";")) (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_c0 != 0) {\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }" (if "if") (parenthesized_expression "(local_c0 != 0)" (( "(") (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar30 = FUN_000315c0(0,0);\n                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);\n                local_c0 = (int)uVar30;\n                iVar27 = *(int *)(param_2 + 0xc);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }\n              }" ({ "{") (expression_statement "uVar30 = FUN_000315c0(0,0);" (assignment_expression "uVar30 = FUN_000315c0(0,0)" (identifier "uVar30") (= "=") (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);" (assignment_expression "uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20)" (identifier "uVar16") (= "=") (call_expression "(undefined4)((ulonglong)uVar30 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar30 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar30")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_c0 = (int)uVar30;" (assignment_expression "local_c0 = (int)uVar30" (identifier "local_c0") (= "=") (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30"))) (; ";")) (expression_statement "iVar27 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar27 = *(int *)(param_2 + 0xc)" (identifier "iVar27") (= "=") (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 (iVar27 != 0) {\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }" (if "if") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);\n                }" ({ "{") (expression_statement "FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16)" (identifier "FUN_000315c0") (argument_list "(iVar27 + 1,iVar27,uVar16,uVar16)" (( "(") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (, ",") (identifier "iVar27") (, ",") (identifier "uVar16") (, ",") (identifier "uVar16") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x289da)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x289da" (identifier "unaff_EBP") (+ "+") (number_literal "0x289da")) () ")"))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_00070950()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(int *)(param_2 + 0x34)" (identifier "local_c4") (= "=") (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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = 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")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" (identifier "uVar9") (= "=") (call_expression "FUN_00026b50()" (identifier "FUN_00026b50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 "uVar9")) (; ";")) (if_statement "if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)) {\n                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c))" (( "(") (binary_expression "((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&\n                 (0 < (int)local_3c)" (parenthesized_expression "((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0))" (( "(") (binary_expression "(*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)" (parenthesized_expression "(*(int *)(iVar18 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(iVar18 + 0x3c) != 0" (pointer_expression "*(int *)(iVar18 + 0x3c)" (* "*") (cast_expression "(int *)(iVar18 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0x3c)" (( "(") (binary_expression "iVar18 + 0x3c" (identifier "iVar18") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar18 = FUN_00029640(), iVar18 != 0)" (( "(") (comma_expression "iVar18 = FUN_00029640(), iVar18 != 0" (assignment_expression "iVar18 = FUN_00029640()" (identifier "iVar18") (= "=") (call_expression "FUN_00029640()" (identifier "FUN_00029640") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (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                sVar10 = *(short *)(param_2 + 2);\n                uVar12 = (int)local_3c >> 0x1f;\n                if ((int)local_3c < 8) {\n                  if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }\n              }" ({ "{") (expression_statement "sVar10 = *(short *)(param_2 + 2);" (assignment_expression "sVar10 = *(short *)(param_2 + 2)" (identifier "sVar10") (= "=") (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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }\n                else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }\n                }" ({ "{") (if_statement "if (local_3c == 1) {\n                    if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }\n                  else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\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 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }\n                  }" ({ "{") (if_statement "if (0 < sVar10) {\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" (if "if") (parenthesized_expression "(0 < sVar10)" (( "(") (binary_expression "0 < sVar10" (number_literal "0") (< "<") (identifier "sVar10")) () ")")) (compound_statement "{\n                      sVar10 = 0;\n                      goto LAB_00083ad6;\n                    }" ({ "{") (expression_statement "sVar10 = 0;" (assignment_expression "sVar10 = 0" (identifier "sVar10") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00083ad6;" (goto "goto") (statement_identifier "LAB_00083ad6") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" (else "else") (compound_statement "{\n                    uVar22 = local_3c;\n                    uVar25 = uVar12;\n                    sVar7 = 0x28;\n                    do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);\n                    if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }\n                  }" ({ "{") (expression_statement "uVar22 = local_3c;" (assignment_expression "uVar22 = local_3c" (identifier "uVar22") (= "=") (identifier "local_3c")) (; ";")) (expression_statement "uVar25 = uVar12;" (assignment_expression "uVar25 = uVar12" (identifier "uVar25") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "sVar7 = 0x28;" (assignment_expression "sVar7 = 0x28" (identifier "sVar7") (= "=") (number_literal "0x28")) (; ";")) (do_statement "do {\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    } while (uVar5 < 8);" (do "do") (compound_statement "{\n                      sVar23 = sVar7;\n                      uVar5 = uVar22 * 2;\n                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;\n                      uVar25 = 0;\n                      uVar22 = uVar5;\n                      sVar7 = sVar23 + -10;\n                    }" ({ "{") (expression_statement "sVar23 = sVar7;" (assignment_expression "sVar23 = sVar7" (identifier "sVar23") (= "=") (identifier "sVar7")) (; ";")) (expression_statement "uVar5 = uVar22 * 2;" (assignment_expression "uVar5 = uVar22 * 2" (identifier "uVar5") (= "=") (binary_expression "uVar22 * 2" (identifier "uVar22") (* "*") (number_literal "2"))) (; ";")) (if_statement "if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;" (if "if") (parenthesized_expression "((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0)" (( "(") (binary_expression "(uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0" (binary_expression "(uVar25 & 0x7fffffff) != 0" (parenthesized_expression "(uVar25 & 0x7fffffff)" (( "(") (binary_expression "uVar25 & 0x7fffffff" (identifier "uVar25") (& "&") (number_literal "0x7fffffff")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(int)uVar22 < 0" (cast_expression "(int)uVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar22")) (< "<") (number_literal "0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar22 = uVar5;" (assignment_expression "uVar22 = uVar5" (identifier "uVar22") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "sVar7 = sVar23 + -10;" (assignment_expression "sVar7 = sVar23 + -10" (identifier "sVar7") (= "=") (binary_expression "sVar23 + -10" (identifier "sVar23") (+ "+") (number_literal "-10"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 < 8)" (( "(") (binary_expression "uVar5 < 8" (identifier "uVar5") (< "<") (number_literal "8")) () ")")) (; ";")) (if_statement "if ((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" (if "if") (parenthesized_expression "((short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10)" (( "(") (binary_expression "(short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10" (cast_expression "(short)(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP))" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP))" (( "(") (binary_expression "sVar23 + -0x14 +\n                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" (binary_expression "sVar23 + -0x14" (identifier "sVar23") (+ "+") (number_literal "-0x14")) (+ "+") (pointer_expression "*(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" (* "*") (cast_expression "(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)" (( "(") (binary_expression "&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (uVar5 & 7) * 2" (pointer_expression "&UNK_0002f45f" (& "&") (identifier "UNK_0002f45f")) (+ "+") (binary_expression "(uVar5 & 7) * 2" (parenthesized_expression "(uVar5 & 7)" (( "(") (binary_expression "uVar5 & 7" (identifier "uVar5") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) (+ "+") (identifier "unaff_EBP")) () ")"))))) () ")"))) (< "<") (identifier "sVar10")) () ")")) (compound_statement "{\n                      sVar10 = 0x28;\n                      local_bc = local_3c;\n                      do {\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);\n                      goto LAB_00083ac3;\n                    }" ({ "{") (expression_statement "sVar10 = 0x28;" (assignment_expression "sVar10 = 0x28" (identifier "sVar10") (= "=") (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                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      } while (local_bc < 8);" (do "do") (compound_statement "{\n                        sVar10 = sVar10 + -10;\n                        bVar29 = CARRY4(local_bc,local_bc);\n                        local_bc = local_bc * 2;\n                        if (uVar12 * 2 + (uint)bVar29 != 0) break;\n                        uVar12 = 0;\n                      }" ({ "{") (expression_statement "sVar10 = sVar10 + -10;" (assignment_expression "sVar10 = sVar10 + -10" (identifier "sVar10") (= "=") (binary_expression "sVar10 + -10" (identifier "sVar10") (+ "+") (number_literal "-10"))) (; ";")) (expression_statement "bVar29 = CARRY4(local_bc,local_bc);" (assignment_expression "bVar29 = CARRY4(local_bc,local_bc)" (identifier "bVar29") (= "=") (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)bVar29 != 0) break;" (if "if") (parenthesized_expression "(uVar12 * 2 + (uint)bVar29 != 0)" (( "(") (binary_expression "uVar12 * 2 + (uint)bVar29 != 0" (binary_expression "uVar12 * 2 + (uint)bVar29" (binary_expression "uVar12 * 2" (identifier "uVar12") (* "*") (number_literal "2")) (+ "+") (cast_expression "(uint)bVar29" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar29"))) (!= "!=") (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_00083ac3;" (goto "goto") (statement_identifier "LAB_00083ac3") (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }" (else "else") (compound_statement "{\n                  if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }\n                  uVar25 = 0x3c - uVar25;\n                  bVar8 = (byte)uVar25 & 0x1f;\n                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                  if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }\n                  if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }\n                }" ({ "{") (if_statement "if ((int)local_3c < 0) {\n                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }\n                  else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 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                    uVar25 = 0x1f;\n                    if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = uVar25 ^ 0x1f;\n                  }" ({ "{") (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" (identifier "uVar25") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if ((int)local_3c < 0) {\n                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" ({ "{") (for_statement "for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }" (for "for") (( "(") (; ";") (binary_expression "uVar12 >> uVar25 == 0" (binary_expression "uVar12 >> uVar25" (identifier "uVar12") (>> ">>") (identifier "uVar25")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar25 = uVar25 - 1" (identifier "uVar25") (= "=") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar25 = uVar25 ^ 0x1f;" (assignment_expression "uVar25 = uVar25 ^ 0x1f" (identifier "uVar25") (= "=") (binary_expression "uVar25 ^ 0x1f" (identifier "uVar25") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }" (else "else") (compound_statement "{\n                    uVar25 = 0x1f;\n                    if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }\n                    uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                  }" ({ "{") (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" (identifier "uVar25") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (local_3c != 0) {\n                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }\n                    }" ({ "{") (for_statement "for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                      }" (for "for") (( "(") (; ";") (binary_expression "local_3c >> uVar25 == 0" (binary_expression "local_3c >> uVar25" (identifier "local_3c") (>> ">>") (identifier "uVar25")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar25 = uVar25 - 1" (identifier "uVar25") (= "=") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                      }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar25 = (uVar25 ^ 0x1f) + 0x20;" (assignment_expression "uVar25 = (uVar25 ^ 0x1f) + 0x20" (identifier "uVar25") (= "=") (binary_expression "(uVar25 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar25 ^ 0x1f)" (( "(") (binary_expression "uVar25 ^ 0x1f" (identifier "uVar25") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "uVar25 = 0x3c - uVar25;" (assignment_expression "uVar25 = 0x3c - uVar25" (identifier "uVar25") (= "=") (binary_expression "0x3c - uVar25" (number_literal "0x3c") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "bVar8 = (byte)uVar25 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar25 & 0x1f" (identifier "bVar8") (= "=") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;" (assignment_expression "uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (identifier "uVar22") (= "=") (binary_expression "local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (binary_expression "local_3c >> bVar8" (identifier "local_3c") (>> ">>") (identifier "bVar8")) (| "|") (binary_expression "uVar12 << 0x20 - bVar8" (identifier "uVar12") (<< "<<") (binary_expression "0x20 - bVar8" (number_literal "0x20") (- "-") (identifier "bVar8"))))) (; ";")) (if_statement "if ((uVar25 & 0x20) != 0) {\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }" (if "if") (parenthesized_expression "((uVar25 & 0x20) != 0)" (( "(") (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" (( "(") (binary_expression "uVar25 & 0x20" (identifier "uVar25") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);\n                  }" ({ "{") (expression_statement "uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);" (assignment_expression "uVar22 = uVar12 >> ((byte)uVar25 & 0x1f)" (identifier "uVar22") (= "=") (binary_expression "uVar12 >> ((byte)uVar25 & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (if_statement "if ((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }" (if "if") (parenthesized_expression "((short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10)" (( "(") (binary_expression "(short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10" (cast_expression "(short)((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP))" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "((short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP))" (( "(") (binary_expression "(short)uVar25 * 10 + 0x1e +\n                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" (binary_expression "(short)uVar25 * 10 + 0x1e" (binary_expression "(short)uVar25 * 10" (cast_expression "(short)uVar25" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar25")) (* "*") (number_literal "10")) (+ "+") (number_literal "0x1e")) (+ "+") (pointer_expression "*(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" (* "*") (cast_expression "(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)" (( "(") (binary_expression "&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (uVar22 & 7) * 2" (pointer_expression "&UNK_0002f45f" (& "&") (identifier "UNK_0002f45f")) (+ "+") (binary_expression "(uVar22 & 7) * 2" (parenthesized_expression "(uVar22 & 7)" (( "(") (binary_expression "uVar22 & 7" (identifier "uVar22") (& "&") (number_literal "7")) () ")")) (* "*") (number_literal "2"))) (+ "+") (identifier "unaff_EBP")) () ")"))))) () ")"))) (< "<") (identifier "sVar10")) () ")")) (compound_statement "{\n                    if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }\n                    uVar25 = 0x3c - uVar25;\n                    sVar10 = (short)uVar25 * 10 + 0x28;\n                    bVar8 = (byte)uVar25 & 0x1f;\n                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;\n                    if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }\nLAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);\nLAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;\n                  }" ({ "{") (if_statement "if ((int)local_3c < 0) {\n                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }\n                    else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 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                      uVar25 = 0x1f;\n                      if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = uVar25 ^ 0x1f;\n                    }" ({ "{") (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" (identifier "uVar25") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if ((int)local_3c < 0) {\n                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" ({ "{") (for_statement "for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }" (for "for") (( "(") (; ";") (binary_expression "uVar12 >> uVar25 == 0" (binary_expression "uVar12 >> uVar25" (identifier "uVar12") (>> ">>") (identifier "uVar25")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar25 = uVar25 - 1" (identifier "uVar25") (= "=") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                        }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar25 = uVar25 ^ 0x1f;" (assignment_expression "uVar25 = uVar25 ^ 0x1f" (identifier "uVar25") (= "=") (binary_expression "uVar25 ^ 0x1f" (identifier "uVar25") (^ "^") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }" (else "else") (compound_statement "{\n                      uVar25 = 0x1f;\n                      if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }\n                      uVar25 = (uVar25 ^ 0x1f) + 0x20;\n                    }" ({ "{") (expression_statement "uVar25 = 0x1f;" (assignment_expression "uVar25 = 0x1f" (identifier "uVar25") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (local_3c != 0) {\n                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 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 >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }\n                      }" ({ "{") (for_statement "for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {\n                        }" (for "for") (( "(") (; ";") (binary_expression "local_3c >> uVar25 == 0" (binary_expression "local_3c >> uVar25" (identifier "local_3c") (>> ">>") (identifier "uVar25")) (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar25 = uVar25 - 1" (identifier "uVar25") (= "=") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n                        }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar25 = (uVar25 ^ 0x1f) + 0x20;" (assignment_expression "uVar25 = (uVar25 ^ 0x1f) + 0x20" (identifier "uVar25") (= "=") (binary_expression "(uVar25 ^ 0x1f) + 0x20" (parenthesized_expression "(uVar25 ^ 0x1f)" (( "(") (binary_expression "uVar25 ^ 0x1f" (identifier "uVar25") (^ "^") (number_literal "0x1f")) () ")")) (+ "+") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "uVar25 = 0x3c - uVar25;" (assignment_expression "uVar25 = 0x3c - uVar25" (identifier "uVar25") (= "=") (binary_expression "0x3c - uVar25" (number_literal "0x3c") (- "-") (identifier "uVar25"))) (; ";")) (expression_statement "sVar10 = (short)uVar25 * 10 + 0x28;" (assignment_expression "sVar10 = (short)uVar25 * 10 + 0x28" (identifier "sVar10") (= "=") (binary_expression "(short)uVar25 * 10 + 0x28" (binary_expression "(short)uVar25 * 10" (cast_expression "(short)uVar25" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar25")) (* "*") (number_literal "10")) (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "bVar8 = (byte)uVar25 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar25 & 0x1f" (identifier "bVar8") (= "=") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;" (assignment_expression "local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (identifier "local_bc") (= "=") (binary_expression "local_3c >> bVar8 | uVar12 << 0x20 - bVar8" (binary_expression "local_3c >> bVar8" (identifier "local_3c") (>> ">>") (identifier "bVar8")) (| "|") (binary_expression "uVar12 << 0x20 - bVar8" (identifier "uVar12") (<< "<<") (binary_expression "0x20 - bVar8" (number_literal "0x20") (- "-") (identifier "bVar8"))))) (; ";")) (if_statement "if ((uVar25 & 0x20) != 0) {\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }" (if "if") (parenthesized_expression "((uVar25 & 0x20) != 0)" (( "(") (binary_expression "(uVar25 & 0x20) != 0" (parenthesized_expression "(uVar25 & 0x20)" (( "(") (binary_expression "uVar25 & 0x20" (identifier "uVar25") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);\n                    }" ({ "{") (expression_statement "local_bc = uVar12 >> ((byte)uVar25 & 0x1f);" (assignment_expression "local_bc = uVar12 >> ((byte)uVar25 & 0x1f)" (identifier "local_bc") (= "=") (binary_expression "uVar12 >> ((byte)uVar25 & 0x1f)" (identifier "uVar12") (>> ">>") (parenthesized_expression "((byte)uVar25 & 0x1f)" (( "(") (binary_expression "(byte)uVar25 & 0x1f" (cast_expression "(byte)uVar25" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar25")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_00083ac3:\n                    sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);" (statement_identifier "LAB_00083ac3") (: ":") (expression_statement "sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);" (assignment_expression "sVar10 = sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (identifier "sVar10") (= "=") (binary_expression "sVar10 + -10 +\n                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (binary_expression "sVar10 + -10" (identifier "sVar10") (+ "+") (number_literal "-10")) (+ "+") (pointer_expression "*(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (* "*") (cast_expression "(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP)" (( "(") (binary_expression "&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP" (binary_expression "&UNK_0002f45f + (local_bc & 7) * 2" (pointer_expression "&UNK_0002f45f" (& "&") (identifier "UNK_0002f45f")) (+ "+") (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"))) (+ "+") (identifier "unaff_EBP")) () ")")))))) (; ";"))) (labeled_statement "LAB_00083ad6:\n                    *(short *)(param_2 + 2) = sVar10;" (statement_identifier "LAB_00083ad6") (: ":") (expression_statement "*(short *)(param_2 + 2) = sVar10;" (assignment_expression "*(short *)(param_2 + 2) = sVar10" (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 "sVar10")) (; ";"))) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (local_c0 != 0) {\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }" (if "if") (parenthesized_expression "(local_c0 != 0)" (( "(") (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar18 = local_c8[0x1a] + -1;\n                if (-1 < local_c0) {\n                  iVar18 = local_c0;\n                }\n                iVar27 = unaff_EBP + 0x5d8e3;\n                if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }\n                *(int *)(iVar27 + 8) = local_c8[0x1a];\n              }" ({ "{") (expression_statement "iVar18 = local_c8[0x1a] + -1;" (assignment_expression "iVar18 = local_c8[0x1a] + -1" (identifier "iVar18") (= "=") (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_c0) {\n                  iVar18 = local_c0;\n                }" (if "if") (parenthesized_expression "(-1 < local_c0)" (( "(") (binary_expression "-1 < local_c0" (number_literal "-1") (< "<") (identifier "local_c0")) () ")")) (compound_statement "{\n                  iVar18 = local_c0;\n                }" ({ "{") (expression_statement "iVar18 = local_c0;" (assignment_expression "iVar18 = local_c0" (identifier "iVar18") (= "=") (identifier "local_c0")) (; ";")) (} "}"))) (expression_statement "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x5d8e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x5d8e3"))) (; ";")) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                  iVar27 = iVar18 * 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                  iVar27 = iVar18 * 0x14 + local_c8[0x19];\n                }" ({ "{") (expression_statement "iVar27 = iVar18 * 0x14 + local_c8[0x19];" (assignment_expression "iVar27 = iVar18 * 0x14 + local_c8[0x19]" (identifier "iVar27") (= "=") (binary_expression "iVar18 * 0x14 + local_c8[0x19]" (binary_expression "iVar18 * 0x14" (identifier "iVar18") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "local_c8[0x19]" (identifier "local_c8") ([ "[") (number_literal "0x19") (] "]")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar27 + 8) = local_c8[0x1a];" (assignment_expression "*(int *)(iVar27 + 8) = local_c8[0x1a]" (pointer_expression "*(int *)(iVar27 + 8)" (* "*") (cast_expression "(int *)(iVar27 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 8)" (( "(") (binary_expression "iVar27 + 8" (identifier "iVar27") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "local_c8[0x1a]" (identifier "local_c8") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00082ed0;" (goto "goto") (statement_identifier "LAB_00082ed0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" (else "else") (compound_statement "{\n            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }\n            iVar27 = piVar20[10];\n            piVar20[10] = iVar27 + 2;\n            uVar16 = FUN_000315c0(0,0);\n            *(undefined4 *)(param_2 + 0x14) = uVar16;\n            pbVar4 = param_2;\n            do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (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 = iVar27;\n            local_d0 = (byte *)FUN_00070950();\n            if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }\n          }" ({ "{") (if_statement "if ((bVar8 == 0x86) || (bVar8 == 0x84)) {\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" (if "if") (parenthesized_expression "((bVar8 == 0x86) || (bVar8 == 0x84))" (( "(") (binary_expression "(bVar8 == 0x86) || (bVar8 == 0x84)" (parenthesized_expression "(bVar8 == 0x86)" (( "(") (binary_expression "bVar8 == 0x86" (identifier "bVar8") (== "==") (number_literal "0x86")) () ")")) (|| "||") (parenthesized_expression "(bVar8 == 0x84)" (( "(") (binary_expression "bVar8 == 0x84" (identifier "bVar8") (== "==") (number_literal "0x84")) () ")"))) () ")")) (compound_statement "{\n              if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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_38 = local_c0;\n              local_d0 = (byte *)FUN_00070950();\n              if (local_d0 != (byte *)0x0) goto LAB_00082b00;\n              bVar8 = *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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(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) = iVar18;\n              if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }\nLAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }\n              if (piVar20[9] == 0) goto LAB_00082732;\n              goto LAB_0008273c;\n            }" ({ "{") (if_statement "if ((char)local_74 == '\x01') {\n                local_c0 = local_70;\n              }\n              else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\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                local_c0 = local_70;\n              }" ({ "{") (expression_statement "local_c0 = local_70;" (assignment_expression "local_c0 = local_70" (identifier "local_c0") (= "=") (identifier "local_70")) (; ";")) (} "}")) (else_clause "else {\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n              }" (else "else") (compound_statement "{\n                local_c0 = piVar20[10];\n                piVar20[10] = local_c0 + 1;\n                uVar16 = FUN_000315c0(0,0);\n                *(undefined4 *)(param_2 + 0x14) = uVar16;\n                pbVar4 = param_2;\n                do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);\n                puVar2 = (uint *)(pbVar26 + 4);\n                *puVar2 = *puVar2 | 0x20;\n              }" ({ "{") (expression_statement "local_c0 = piVar20[10];" (assignment_expression "local_c0 = piVar20[10]" (identifier "local_c0") (= "=") (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar20[10] = local_c0 + 1;" (assignment_expression "piVar20[10] = local_c0 + 1" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "local_c0 + 1" (identifier "local_c0") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = FUN_000315c0(0,0);" (assignment_expression "uVar16 = FUN_000315c0(0,0)" (identifier "uVar16") (= "=") (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "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 "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" (identifier "pbVar4") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                } while (pbVar4 != (byte *)0x0);" (do "do") (compound_statement "{\n                  pbVar26 = pbVar4;\n                  pbVar4 = *(byte **)(pbVar26 + 0x38);\n                }" ({ "{") (expression_statement "pbVar26 = pbVar4;" (assignment_expression "pbVar26 = pbVar4" (identifier "pbVar26") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "pbVar4 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar4 = *(byte **)(pbVar26 + 0x38)" (identifier "pbVar4") (= "=") (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 "(pbVar4 != (byte *)0x0)" (( "(") (binary_expression "pbVar4 != (byte *)0x0" (identifier "pbVar4") (!= "!=") (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 = local_c0;" (assignment_expression "local_38 = local_c0" (identifier "local_38") (= "=") (identifier "local_c0")) (; ";")) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_00070950()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (local_d0 != (byte *)0x0) goto LAB_00082b00;" (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_00082b00;" (goto "goto") (statement_identifier "LAB_00082b00") (; ";"))) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" (identifier "bVar8") (= "=") (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 (bVar8 == 0x86) {\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\n              }\n              else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }" (if "if") (parenthesized_expression "(bVar8 == 0x86)" (( "(") (binary_expression "bVar8 == 0x86" (identifier "bVar8") (== "==") (number_literal "0x86")) () ")")) (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,2);\n                iVar27 = unaff_EBP + 0x289ee;\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 "iVar27 = unaff_EBP + 0x289ee;" (assignment_expression "iVar27 = unaff_EBP + 0x289ee" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x289ee" (identifier "unaff_EBP") (+ "+") (number_literal "0x289ee"))) (; ";")) (} "}")) (else_clause "else {\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }\n              }" (else "else") (compound_statement "{\n                local_3c = CONCAT31(local_3c._1_3_,1);\n                iVar27 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\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 "iVar27 = unaff_EBP + 0x289da;" (assignment_expression "iVar27 = unaff_EBP + 0x289da" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x289da" (identifier "unaff_EBP") (+ "+") (number_literal "0x289da"))) (; ";")) (if_statement "if (bVar8 != 0x85) {\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }" (if "if") (parenthesized_expression "(bVar8 != 0x85)" (( "(") (binary_expression "bVar8 != 0x85" (identifier "bVar8") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                  iVar27 = unaff_EBP + 0x289e4;\n                  if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }\n                }" ({ "{") (expression_statement "iVar27 = unaff_EBP + 0x289e4;" (assignment_expression "iVar27 = unaff_EBP + 0x289e4" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x289e4" (identifier "unaff_EBP") (+ "+") (number_literal "0x289e4"))) (; ";")) (if_statement "if (bVar8 != 0x87) {\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }" (if "if") (parenthesized_expression "(bVar8 != 0x87)" (( "(") (binary_expression "bVar8 != 0x87" (identifier "bVar8") (!= "!=") (number_literal "0x87")) () ")")) (compound_statement "{\n                    iVar27 = unaff_EBP + 0x289f5;\n                  }" ({ "{") (expression_statement "iVar27 = unaff_EBP + 0x289f5;" (assignment_expression "iVar27 = unaff_EBP + 0x289f5" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x289f5" (identifier "unaff_EBP") (+ "+") (number_literal "0x289f5"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x29001,iVar27)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x29001" (identifier "unaff_EBP") (+ "+") (number_literal "0x29001")) (, ",") (identifier "iVar27") () ")"))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_00070950()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(int *)(param_2 + 0x34)" (identifier "local_c4") (= "=") (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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = 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")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (*param_2 == 0x84) {\n                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\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                uVar9 = FUN_00026b50();\n                *(undefined2 *)(param_2 + 2) = uVar9;\n              }" ({ "{") (expression_statement "uVar9 = FUN_00026b50();" (assignment_expression "uVar9 = FUN_00026b50()" (identifier "uVar9") (= "=") (call_expression "FUN_00026b50()" (identifier "FUN_00026b50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined2 *)(param_2 + 2) = uVar9;" (assignment_expression "*(undefined2 *)(param_2 + 2) = uVar9" (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 "uVar9")) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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_000432e0();\n              }" ({ "{") (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" (identifier "FUN_000432e0") (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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\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                iVar18 = piVar20[0xe] + -1;\n                iVar11 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar11;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                iVar27 = local_c8[0x1a];\n                FUN_00079470(0,0,&local_74,iVar11,iVar18);\n                uVar21 = FUN_00031430();\n                uVar31 = uVar21;\n                FUN_000315c0(iVar27,0,uVar21,uVar21);\n                FUN_00031430();\nLAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);\n              }" ({ "{") (expression_statement "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = piVar20[0xe] + -1" (identifier "iVar18") (= "=") (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 "uVar16 = FUN_000781b0();" (assignment_expression "uVar16 = FUN_000781b0()" (identifier "uVar16") (= "=") (call_expression "FUN_000781b0()" (identifier "FUN_000781b0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_000315c0(iVar18,0,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar18,0,uVar16,uVar16)" (identifier "FUN_000315c0") (argument_list "(iVar18,0,uVar16,uVar16)" (( "(") (identifier "iVar18") (, ",") (number_literal "0") (, ",") (identifier "uVar16") (, ",") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "iVar27 = local_c8[0x1a];" (assignment_expression "iVar27 = local_c8[0x1a]" (identifier "iVar27") (= "=") (subscript_expression "local_c8[0x1a]" (identifier "local_c8") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "FUN_00079470(0,0,&local_74,iVar11,iVar18);" (call_expression "FUN_00079470(0,0,&local_74,iVar11,iVar18)" (identifier "FUN_00079470") (argument_list "(0,0,&local_74,iVar11,iVar18)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "iVar11") (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "uVar21 = FUN_00031430();" (assignment_expression "uVar21 = FUN_00031430()" (identifier "uVar21") (= "=") (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar31 = uVar21;" (assignment_expression "uVar31 = uVar21" (identifier "uVar31") (= "=") (identifier "uVar21")) (; ";")) (expression_statement "FUN_000315c0(iVar27,0,uVar21,uVar21);" (call_expression "FUN_000315c0(iVar27,0,uVar21,uVar21)" (identifier "FUN_000315c0") (argument_list "(iVar27,0,uVar21,uVar21)" (( "(") (identifier "iVar27") (, ",") (number_literal "0") (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")"))) (; ";")) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00083517:\n                FUN_000315c0(0,0,uVar21,uVar31);" (statement_identifier "LAB_00083517") (: ":") (expression_statement "FUN_000315c0(0,0,uVar21,uVar31);" (call_expression "FUN_000315c0(0,0,uVar21,uVar31)" (identifier "FUN_000315c0") (argument_list "(0,0,uVar21,uVar31)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar21") (, ",") (identifier "uVar31") () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_00082ed0:\n              if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }" (statement_identifier "LAB_00082ed0") (: ":") (if_statement "if (*(int *)(param_2 + 0x38) == 0) {\n                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\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                iVar18 = piVar20[0x36];\n                if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }\n                piVar20[0x36] = iVar18;\n              }" ({ "{") (expression_statement "iVar18 = piVar20[0x36];" (assignment_expression "iVar18 = piVar20[0x36]" (identifier "iVar18") (= "=") (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]"))) (; ";")) (if_statement "if (iVar18 != 0) {\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 8);\n                }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  piVar28 = (int *)piVar20[2];\n                  if (iVar18 < 0) {\n                    iVar18 = piVar28[0x1a] + -1;\n                  }\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }\n                  iVar18 = *(int *)(iVar27 + 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 (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 "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x5d8e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x5d8e3"))) (; ";")) (if_statement "if (*(char *)(*piVar28 + 0x4d) == '\0') {\n                    iVar27 = iVar18 * 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                    iVar27 = iVar18 * 0x14 + piVar28[0x19];\n                  }" ({ "{") (expression_statement "iVar27 = iVar18 * 0x14 + piVar28[0x19];" (assignment_expression "iVar27 = iVar18 * 0x14 + piVar28[0x19]" (identifier "iVar27") (= "=") (binary_expression "iVar18 * 0x14 + piVar28[0x19]" (binary_expression "iVar18 * 0x14" (identifier "iVar18") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "piVar28[0x19]" (identifier "piVar28") ([ "[") (number_literal "0x19") (] "]")))) (; ";")) (} "}"))) (expression_statement "iVar18 = *(int *)(iVar27 + 8);" (assignment_expression "iVar18 = *(int *)(iVar27 + 8)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(iVar27 + 8)" (* "*") (cast_expression "(int *)(iVar27 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 8)" (( "(") (binary_expression "iVar27 + 8" (identifier "iVar27") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "piVar20[0x36] = iVar18;" (assignment_expression "piVar20[0x36] = iVar18" (subscript_expression "piVar20[0x36]" (identifier "piVar20") ([ "[") (number_literal "0x36") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (} "}")))) (if_statement "if (piVar20[9] == 0) goto LAB_00082732;" (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_00082732;" (goto "goto") (statement_identifier "LAB_00082732") (; ";"))) (goto_statement "goto LAB_0008273c;" (goto "goto") (statement_identifier "LAB_0008273c") (; ";")) (} "}"))) (expression_statement "iVar27 = piVar20[10];" (assignment_expression "iVar27 = piVar20[10]" (identifier "iVar27") (= "=") (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar20[10] = iVar27 + 2;" (assignment_expression "piVar20[10] = iVar27 + 2" (subscript_expression "piVar20[10]" (identifier "piVar20") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar27 + 2" (identifier "iVar27") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar16 = FUN_000315c0(0,0);" (assignment_expression "uVar16 = FUN_000315c0(0,0)" (identifier "uVar16") (= "=") (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "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 "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" (identifier "pbVar4") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            } while (pbVar4 != (byte *)0x0);" (do "do") (compound_statement "{\n              pbVar26 = pbVar4;\n              pbVar4 = *(byte **)(pbVar26 + 0x38);\n            }" ({ "{") (expression_statement "pbVar26 = pbVar4;" (assignment_expression "pbVar26 = pbVar4" (identifier "pbVar26") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "pbVar4 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar4 = *(byte **)(pbVar26 + 0x38)" (identifier "pbVar4") (= "=") (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 "(pbVar4 != (byte *)0x0)" (( "(") (binary_expression "pbVar4 != (byte *)0x0" (identifier "pbVar4") (!= "!=") (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 = iVar27;" (assignment_expression "local_38 = iVar27" (identifier "local_38") (= "=") (identifier "iVar27")) (; ";")) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_00070950()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (local_d0 == (byte *)0x0) {\n              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\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              uVar21 = FUN_000315c0(0,0);\n              bVar8 = *param_2;\n              uVar16 = *(undefined4 *)(param_2 + 0x3c);\n              *(undefined4 *)(param_2 + 0x18) = uVar21;\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              iVar11 = unaff_EBP + 0x289ee;\n              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }\n              local_38 = iVar27 + 1;\n              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);\n              local_d0 = (byte *)FUN_00070950();\n              local_c4 = *(int *)(param_2 + 0x34);\n              *(int *)(param_2 + 0x34) = iVar18;\n              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }\n              if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\n              }\n              *(undefined4 *)(param_2 + 0x3c) = uVar16;\n              if (local_d0 == (byte *)0x0) {\n                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }\n              goto LAB_00082ed0;\n            }" ({ "{") (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" (identifier "uVar21") (= "=") (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar8 = *param_2;" (assignment_expression "bVar8 = *param_2" (identifier "bVar8") (= "=") (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) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0x18) = uVar21" (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 "uVar21")) (; ";")) (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 "iVar11 = unaff_EBP + 0x289ee;" (assignment_expression "iVar11 = unaff_EBP + 0x289ee" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x289ee" (identifier "unaff_EBP") (+ "+") (number_literal "0x289ee"))) (; ";")) (if_statement "if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }" (if "if") (parenthesized_expression "((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87))" (( "(") (binary_expression "(bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (parenthesized_expression "(bVar8 != 0x86)" (( "(") (binary_expression "bVar8 != 0x86" (identifier "bVar8") (!= "!=") (number_literal "0x86")) () ")")) (&& "&&") (parenthesized_expression "(iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)" (( "(") (comma_expression "iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87" (assignment_expression "iVar11 = unaff_EBP + 0x289e4" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x289e4" (identifier "unaff_EBP") (+ "+") (number_literal "0x289e4"))) (, ",") (binary_expression "bVar8 != 0x87" (identifier "bVar8") (!= "!=") (number_literal "0x87"))) () ")"))) () ")")) (compound_statement "{\n                iVar11 = unaff_EBP + 0x289da;\n                if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }\n              }" ({ "{") (expression_statement "iVar11 = unaff_EBP + 0x289da;" (assignment_expression "iVar11 = unaff_EBP + 0x289da" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x289da" (identifier "unaff_EBP") (+ "+") (number_literal "0x289da"))) (; ";")) (if_statement "if (bVar8 != 0x85) {\n                  iVar11 = unaff_EBP + 0x289f5;\n                }" (if "if") (parenthesized_expression "(bVar8 != 0x85)" (( "(") (binary_expression "bVar8 != 0x85" (identifier "bVar8") (!= "!=") (number_literal "0x85")) () ")")) (compound_statement "{\n                  iVar11 = unaff_EBP + 0x289f5;\n                }" ({ "{") (expression_statement "iVar11 = unaff_EBP + 0x289f5;" (assignment_expression "iVar11 = unaff_EBP + 0x289f5" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x289f5" (identifier "unaff_EBP") (+ "+") (number_literal "0x289f5"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_38 = iVar27 + 1;" (assignment_expression "local_38 = iVar27 + 1" (identifier "local_38") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x29001,iVar11)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x29001" (identifier "unaff_EBP") (+ "+") (number_literal "0x29001")) (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_d0 = (byte *)FUN_00070950();" (assignment_expression "local_d0 = (byte *)FUN_00070950()" (identifier "local_d0") (= "=") (cast_expression "(byte *)FUN_00070950()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_c4 = *(int *)(param_2 + 0x34);" (assignment_expression "local_c4 = *(int *)(param_2 + 0x34)" (identifier "local_c4") (= "=") (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) = iVar18;" (assignment_expression "*(int *)(param_2 + 0x34) = 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")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {\n                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);\n              }" (if "if") (parenthesized_expression "(*(short *)(iVar18 + 2) < *(short *)(param_2 + 2))" (( "(") (binary_expression "*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)" (pointer_expression "*(short *)(iVar18 + 2)" (* "*") (cast_expression "(short *)(iVar18 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 2)" (( "(") (binary_expression "iVar18 + 2" (identifier "iVar18") (+ "+") (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 *)(iVar18 + 2);\n              }" ({ "{") (expression_statement "*(short *)(param_2 + 2) = *(short *)(iVar18 + 2);" (assignment_expression "*(short *)(param_2 + 2) = *(short *)(iVar18 + 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 *)(iVar18 + 2)" (* "*") (cast_expression "(short *)(iVar18 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 2)" (( "(") (binary_expression "iVar18 + 2" (identifier "iVar18") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_2 + 0x3c) != 0) {\n                FUN_000432e0();\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_000432e0();\n              }" ({ "{") (expression_statement "FUN_000432e0();" (call_expression "FUN_000432e0()" (identifier "FUN_000432e0") (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                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\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                iVar18 = piVar20[0xe] + -1;\n                iVar27 = piVar20[0xe] + -2;\n                piVar20[0xe] = iVar27;\n                uVar16 = FUN_000781b0();\n                FUN_000315c0(iVar18,0,uVar16,uVar16);\n                if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }\n                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);\n                FUN_000316b0(iVar27,iVar11,0);\n                if (iVar11 != 0) {\n                  FUN_00029c40();\n                }\n                FUN_00079470(0,0,&local_74,iVar27,iVar18);\n                FUN_00031430();\n                uVar21 = extraout_ECX_00;\n                uVar31 = extraout_ECX_00;\n                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);\n                FUN_00031430();\n                FUN_000315c0(0,0);\n                goto LAB_00083517;\n              }" ({ "{") (expression_statement "iVar18 = piVar20[0xe] + -1;" (assignment_expression "iVar18 = piVar20[0xe] + -1" (identifier "iVar18") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar27 = piVar20[0xe] + -2;" (assignment_expression "iVar27 = piVar20[0xe] + -2" (identifier "iVar27") (= "=") (binary_expression "piVar20[0xe] + -2" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "piVar20[0xe] = iVar27;" (assignment_expression "piVar20[0xe] = iVar27" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar27")) (; ";")) (expression_statement "uVar16 = FUN_000781b0();" (assignment_expression "uVar16 = FUN_000781b0()" (identifier "uVar16") (= "=") (call_expression "FUN_000781b0()" (identifier "FUN_000781b0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_000315c0(iVar18,0,uVar16,uVar16);" (call_expression "FUN_000315c0(iVar18,0,uVar16,uVar16)" (identifier "FUN_000315c0") (argument_list "(iVar18,0,uVar16,uVar16)" (( "(") (identifier "iVar18") (, ",") (number_literal "0") (, ",") (identifier "uVar16") (, ",") (identifier "uVar16") () ")"))) (; ";")) (if_statement "if (*(char *)((int)piVar20 + 0x13) == '\0') {\n                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }\n                else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\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                  iVar11 = piVar20[0xb] + 1;\n                  piVar20[0xb] = iVar11;\n                  piVar28 = piVar20;\n                }" ({ "{") (expression_statement "iVar11 = piVar20[0xb] + 1;" (assignment_expression "iVar11 = piVar20[0xb] + 1" (identifier "iVar11") (= "=") (binary_expression "piVar20[0xb] + 1" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar20[0xb] = iVar11;" (assignment_expression "piVar20[0xb] = iVar11" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "piVar28 = piVar20;" (assignment_expression "piVar28 = piVar20" (identifier "piVar28") (= "=") (identifier "piVar20")) (; ";")) (} "}")) (else_clause "else {\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }" (else "else") (compound_statement "{\n                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;\n                  *(byte *)((int)piVar20 + 0x13) = bVar8;\n                  iVar11 = piVar20[bVar8 + 0x26];\n                  piVar28 = extraout_ECX;\n                }" ({ "{") (expression_statement "bVar8 = *(char *)((int)piVar20 + 0x13) - 1;" (assignment_expression "bVar8 = *(char *)((int)piVar20 + 0x13) - 1" (identifier "bVar8") (= "=") (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) = bVar8;" (assignment_expression "*(byte *)((int)piVar20 + 0x13) = bVar8" (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 "bVar8")) (; ";")) (expression_statement "iVar11 = piVar20[bVar8 + 0x26];" (assignment_expression "iVar11 = piVar20[bVar8 + 0x26]" (identifier "iVar11") (= "=") (subscript_expression "piVar20[bVar8 + 0x26]" (identifier "piVar20") ([ "[") (binary_expression "bVar8 + 0x26" (identifier "bVar8") (+ "+") (number_literal "0x26")) (] "]"))) (; ";")) (expression_statement "piVar28 = extraout_ECX;" (assignment_expression "piVar28 = extraout_ECX" (identifier "piVar28") (= "=") (identifier "extraout_ECX")) (; ";")) (} "}")))) (expression_statement "uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);" (assignment_expression "uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28)" (identifier "uVar16") (= "=") (call_expression "FUN_000315c0(iVar11,0,piVar28,piVar28)" (identifier "FUN_000315c0") (argument_list "(iVar11,0,piVar28,piVar28)" (( "(") (identifier "iVar11") (, ",") (number_literal "0") (, ",") (identifier "piVar28") (, ",") (identifier "piVar28") () ")")))) (; ";")) (expression_statement "FUN_000316b0(iVar27,iVar11,0);" (call_expression "FUN_000316b0(iVar27,iVar11,0)" (identifier "FUN_000316b0") (argument_list "(iVar27,iVar11,0)" (( "(") (identifier "iVar27") (, ",") (identifier "iVar11") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (iVar11 != 0) {\n                  FUN_00029c40();\n                }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00029c40();\n                }" ({ "{") (expression_statement "FUN_00029c40();" (call_expression "FUN_00029c40()" (identifier "FUN_00029c40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_00079470(0,0,&local_74,iVar27,iVar18);" (call_expression "FUN_00079470(0,0,&local_74,iVar27,iVar18)" (identifier "FUN_00079470") (argument_list "(0,0,&local_74,iVar27,iVar18)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "iVar27") (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar21 = extraout_ECX_00;" (assignment_expression "uVar21 = extraout_ECX_00" (identifier "uVar21") (= "=") (identifier "extraout_ECX_00")) (; ";")) (expression_statement "uVar31 = extraout_ECX_00;" (assignment_expression "uVar31 = extraout_ECX_00" (identifier "uVar31") (= "=") (identifier "extraout_ECX_00")) (; ";")) (expression_statement "FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);" (call_expression "FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00)" (identifier "FUN_000315c0") (argument_list "(uVar16,0,extraout_ECX_00,extraout_ECX_00)" (( "(") (identifier "uVar16") (, ",") (number_literal "0") (, ",") (identifier "extraout_ECX_00") (, ",") (identifier "extraout_ECX_00") () ")"))) (; ";")) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_000315c0(0,0);" (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (goto_statement "goto LAB_00083517;" (goto "goto") (statement_identifier "LAB_00083517") (; ";")) (} "}"))) (goto_statement "goto LAB_00082ed0;" (goto "goto") (statement_identifier "LAB_00082ed0") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00082b00:\n          param_3[3] = local_68;" (statement_identifier "LAB_00082b00") (: ":") (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_00081db1;" (goto "goto") (statement_identifier "LAB_00081db1") (; ";")) (} "}"))) (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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }\n        else {\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\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_000827ee:\n          iVar18 = FUN_0003c520(0,0);\n          if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }\n        }" ({ "{") (labeled_statement "LAB_000827ee:\n          iVar18 = FUN_0003c520(0,0);" (statement_identifier "LAB_000827ee") (: ":") (expression_statement "iVar18 = FUN_0003c520(0,0);" (assignment_expression "iVar18 = FUN_0003c520(0,0)" (identifier "iVar18") (= "=") (call_expression "FUN_0003c520(0,0)" (identifier "FUN_0003c520") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";"))) (if_statement "if (iVar18 == 0) {\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" (if "if") (parenthesized_expression "(iVar18 == 0)" (( "(") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar17 = piVar20[0xe] + -1;\n            piVar20[0xe] = iVar17;\n            param_2[2] = 0x40;\n            param_2[3] = 1;\n            FUN_000781b0();\n            uVar16 = *(undefined4 *)(param_2 + 0x3c);\n            iVar18 = *piVar28;\n            param_2[0x3c] = 0;\n            param_2[0x3d] = 0;\n            param_2[0x3e] = 0;\n            param_2[0x3f] = 0;\n            iVar27 = *(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            iVar11 = *(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            iVar13 = extraout_EDX;\n            if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }\n            local_38 = piVar20[10];\n            local_bc = local_38 + 1;\n            piVar20[10] = local_bc;\n            iVar18 = 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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }\n            }\n            if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\n            }\n            *(int **)(param_2 + 0x30) = piVar14;\n            *(undefined4 *)(param_2 + 0x3c) = uVar16;\n          }" ({ "{") (expression_statement "iVar17 = piVar20[0xe] + -1;" (assignment_expression "iVar17 = piVar20[0xe] + -1" (identifier "iVar17") (= "=") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar20[0xe] = iVar17;" (assignment_expression "piVar20[0xe] = iVar17" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (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_000781b0();" (call_expression "FUN_000781b0()" (identifier "FUN_000781b0") (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 "iVar18 = *piVar28;" (assignment_expression "iVar18 = *piVar28" (identifier "iVar18") (= "=") (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 "iVar27 = *(int *)(param_2 + 8);" (assignment_expression "iVar27 = *(int *)(param_2 + 8)" (identifier "iVar27") (= "=") (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 "iVar11 = *(int *)(param_2 + 0xc);" (assignment_expression "iVar11 = *(int *)(param_2 + 0xc)" (identifier "iVar11") (= "=") (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 "iVar13 = extraout_EDX;" (assignment_expression "iVar13 = extraout_EDX" (identifier "iVar13") (= "=") (identifier "extraout_EDX")) (; ";")) (if_statement "if (0 < iVar18) {\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }" (if "if") (parenthesized_expression "(0 < iVar18)" (( "(") (binary_expression "0 < iVar18" (number_literal "0") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n              iVar19 = 0;\n              bVar8 = *(byte *)((int)piVar28 + 0x2d);\n              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }\n            }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar8 = *(byte *)((int)piVar28 + 0x2d);" (assignment_expression "bVar8 = *(byte *)((int)piVar28 + 0x2d)" (identifier "bVar8") (= "=") (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 (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }" (while "while") (parenthesized_expression "(((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18)))" (( "(") (parenthesized_expression "((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))" (( "(") (binary_expression "(bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18)" (binary_expression "(bVar8 & 0x20) == 0" (parenthesized_expression "(bVar8 & 0x20)" (( "(") (binary_expression "bVar8 & 0x20" (identifier "bVar8") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar19 = iVar19 + 1, iVar19 != iVar18)" (( "(") (comma_expression "iVar19 = iVar19 + 1, iVar19 != iVar18" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar19 != iVar18" (identifier "iVar19") (!= "!=") (identifier "iVar18"))) () ")"))) () ")")) () ")")) (compound_statement "{\n                iVar13 = iVar19 * 0x44;\n                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);\n              }" ({ "{") (expression_statement "iVar13 = iVar19 * 0x44;" (assignment_expression "iVar13 = iVar19 * 0x44" (identifier "iVar13") (= "=") (binary_expression "iVar19 * 0x44" (identifier "iVar19") (* "*") (number_literal "0x44"))) (; ";")) (expression_statement "bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);" (assignment_expression "bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d)" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)((int)piVar28 + iVar13 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar28 + iVar13 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar28 + iVar13 + 0x2d)" (( "(") (binary_expression "(int)piVar28 + iVar13 + 0x2d" (binary_expression "(int)piVar28 + iVar13" (cast_expression "(int)piVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar28")) (+ "+") (identifier "iVar13")) (+ "+") (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 "iVar18 = piVar20[0xb] + 1;" (assignment_expression "iVar18 = piVar20[0xb] + 1" (identifier "iVar18") (= "=") (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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\n              piVar28 = extraout_EDX_00;\nLAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              uVar30 = FUN_00070950();\n              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);\n                goto LAB_00082930;\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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "FUN_000315c0(iVar18,local_c0,iVar13,iVar13);" (call_expression "FUN_000315c0(iVar18,local_c0,iVar13,iVar13)" (identifier "FUN_000315c0") (argument_list "(iVar18,local_c0,iVar13,iVar13)" (( "(") (identifier "iVar18") (, ",") (identifier "local_c0") (, ",") (identifier "iVar13") (, ",") (identifier "iVar13") () ")"))) (; ";")) (goto_statement "goto LAB_00082930;" (goto "goto") (statement_identifier "LAB_00082930") (; ";")) (} "}"))) (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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "FUN_000315c0(iVar18,local_c0,piVar20,piVar20);" (call_expression "FUN_000315c0(iVar18,local_c0,piVar20,piVar20)" (identifier "FUN_000315c0") (argument_list "(iVar18,local_c0,piVar20,piVar20)" (( "(") (identifier "iVar18") (, ",") (identifier "local_c0") (, ",") (identifier "piVar20") (, ",") (identifier "piVar20") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_c0,0);" (call_expression "FUN_000315c0(local_c0,0)" (identifier "FUN_000315c0") (argument_list "(local_c0,0)" (( "(") (identifier "local_c0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar28 = extraout_EDX_00;" (assignment_expression "piVar28 = extraout_EDX_00" (identifier "piVar28") (= "=") (identifier "extraout_EDX_00")) (; ";")) (labeled_statement "LAB_00082986:\n              if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" (statement_identifier "LAB_00082986") (: ":") (if_statement "if (local_bc != 0) {\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" (if "if") (parenthesized_expression "(local_bc != 0)" (( "(") (binary_expression "local_bc != 0" (identifier "local_bc") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);\n                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;\n                *(undefined4 *)(param_2 + 0x14) = uVar21;\n              }" ({ "{") (expression_statement "uVar21 = FUN_000315c0(0,0,piVar28,piVar28);" (assignment_expression "uVar21 = FUN_000315c0(0,0,piVar28,piVar28)" (identifier "uVar21") (= "=") (call_expression "FUN_000315c0(0,0,piVar28,piVar28)" (identifier "FUN_000315c0") (argument_list "(0,0,piVar28,piVar28)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "piVar28") (, ",") (identifier "piVar28") () ")")))) (; ";")) (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) = uVar21;" (assignment_expression "*(undefined4 *)(param_2 + 0x14) = uVar21" (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 "uVar21")) (; ";")) (} "}")))) (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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fb4)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fb4)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fb4" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fb4")) () ")"))) (; ";")) (expression_statement "uVar30 = FUN_00070950();" (assignment_expression "uVar30 = FUN_00070950()" (identifier "uVar30") (= "=") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);" (assignment_expression "uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20)" (identifier "uVar21") (= "=") (call_expression "(undefined4)((ulonglong)uVar30 >> 0x20)" (parenthesized_expression "(undefined4)" (( "(") (identifier "undefined4") () ")")) (argument_list "((ulonglong)uVar30 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar30 >> 0x20" (cast_expression "(ulonglong)uVar30" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar30")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (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 ((int)uVar30 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\n              }" (if "if") (parenthesized_expression "((int)uVar30 == 0)" (( "(") (binary_expression "(int)uVar30 == 0" (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);\n                uVar21 = FUN_000315c0(0,0);\n                if (piVar14 == (int *)0x0) goto LAB_00083923;\n                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);\nLAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);\n                piVar28 = (int *)(piVar20[0xe] + -1);\n                piVar20[0xe] = (int)piVar28;\n                if (0 < iVar11) {\n                  FUN_00031970();\n                }\n                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);\n                if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }\n                uVar21 = FUN_00031430();\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }\n                FUN_000315c0(local_c0,0,piVar28,piVar28);\n                FUN_00031430();\n              }" ({ "{") (expression_statement "local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);" (assignment_expression "local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21)" (identifier "local_c0") (= "=") (call_expression "FUN_000315c0(iVar17,0,uVar21,uVar21)" (identifier "FUN_000315c0") (argument_list "(iVar17,0,uVar21,uVar21)" (( "(") (identifier "iVar17") (, ",") (number_literal "0") (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")")))) (; ";")) (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" (identifier "uVar21") (= "=") (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (piVar14 == (int *)0x0) goto LAB_00083923;" (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_00083923;" (goto "goto") (statement_identifier "LAB_00083923") (; ";"))) (expression_statement "uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);" (assignment_expression "uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21)" (identifier "uVar21") (= "=") (call_expression "FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21)" (identifier "FUN_000315c0") (argument_list "(*piVar14 + 1,iVar18,uVar21,uVar21)" (( "(") (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "1")) (, ",") (identifier "iVar18") (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")")))) (; ";")) (labeled_statement "LAB_00083747:\n                FUN_000315c0(0,0,uVar21,uVar21);" (statement_identifier "LAB_00083747") (: ":") (expression_statement "FUN_000315c0(0,0,uVar21,uVar21);" (call_expression "FUN_000315c0(0,0,uVar21,uVar21)" (identifier "FUN_000315c0") (argument_list "(0,0,uVar21,uVar21)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")"))) (; ";"))) (expression_statement "piVar28 = (int *)(piVar20[0xe] + -1);" (assignment_expression "piVar28 = (int *)(piVar20[0xe] + -1)" (identifier "piVar28") (= "=") (cast_expression "(int *)(piVar20[0xe] + -1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar20[0xe] + -1)" (( "(") (binary_expression "piVar20[0xe] + -1" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "piVar20[0xe] = (int)piVar28;" (assignment_expression "piVar20[0xe] = (int)piVar28" (subscript_expression "piVar20[0xe]" (identifier "piVar20") ([ "[") (number_literal "0xe") (] "]")) (= "=") (cast_expression "(int)piVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar28"))) (; ";")) (if_statement "if (0 < iVar11) {\n                  FUN_00031970();\n                }" (if "if") (parenthesized_expression "(0 < iVar11)" (( "(") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n                  FUN_00031970();\n                }" ({ "{") (expression_statement "FUN_00031970();" (call_expression "FUN_00031970()" (identifier "FUN_00031970") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);" (assignment_expression "uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17)" (identifier "uVar21") (= "=") (call_expression "FUN_00079470(0,0,&local_74,piVar28,iVar17)" (identifier "FUN_00079470") (argument_list "(0,0,&local_74,piVar28,iVar17)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "piVar28") (, ",") (identifier "iVar17") () ")")))) (; ";")) (if_statement "if (iVar27 != 0) {\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }" (if "if") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_000315c0(iVar17,0,uVar21,uVar21);\n                }" ({ "{") (expression_statement "FUN_000315c0(iVar17,0,uVar21,uVar21);" (call_expression "FUN_000315c0(iVar17,0,uVar21,uVar21)" (identifier "FUN_000315c0") (argument_list "(iVar17,0,uVar21,uVar21)" (( "(") (identifier "iVar17") (, ",") (number_literal "0") (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar21 = FUN_00031430();" (assignment_expression "uVar21 = FUN_00031430()" (identifier "uVar21") (= "=") (call_expression "FUN_00031430()" (identifier "FUN_00031430") (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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\n                }\n                else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);\n                  FUN_00070950();\n                  *(byte **)(param_2 + 0x34) = local_d0;\n                  piVar28 = piVar20;\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_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fba,uVar21)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fba" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fba")) (, ",") (identifier "uVar21") () ")"))) (; ";")) (expression_statement "FUN_00070950();" (call_expression "FUN_00070950()" (identifier "FUN_00070950") (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")) (; ";")) (expression_statement "piVar28 = piVar20;" (assignment_expression "piVar28 = piVar20" (identifier "piVar28") (= "=") (identifier "piVar20")) (; ";")) (} "}")) (else_clause "else {\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }" (else "else") (compound_statement "{\n                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);\n                }" ({ "{") (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21)" (identifier "FUN_0003c160") (argument_list "(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21)" (( "(") (identifier "piVar20") (, ",") (binary_expression "unaff_EBP + 0x2b91b" (identifier "unaff_EBP") (+ "+") (number_literal "0x2b91b")) (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_000315c0(local_c0,0,piVar28,piVar28);" (call_expression "FUN_000315c0(local_c0,0,piVar28,piVar28)" (identifier "FUN_000315c0") (argument_list "(local_c0,0,piVar28,piVar28)" (( "(") (identifier "local_c0") (, ",") (number_literal "0") (, ",") (identifier "piVar28") (, ",") (identifier "piVar28") () ")"))) (; ";")) (expression_statement "FUN_00031430();" (call_expression "FUN_00031430()" (identifier "FUN_00031430") (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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);\n              FUN_000315c0(local_c0,0);\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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);\n              iVar13 = FUN_00070950();\n              *(byte **)(local_d0 + 0x38) = param_2;\n              if (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;\n                FUN_000315c0(iVar18,local_c0);\n                local_bc = 0;\nLAB_00082930:\n                FUN_0004c930();\n                FUN_000315c0(*piVar14 + 2,0);\n                FUN_00032090(0xfffffff7);\n                piVar28 = piVar14;\n                local_24 = piVar14;\n                goto LAB_00082986;\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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "FUN_000315c0(iVar18,local_c0);" (call_expression "FUN_000315c0(iVar18,local_c0)" (identifier "FUN_000315c0") (argument_list "(iVar18,local_c0)" (( "(") (identifier "iVar18") (, ",") (identifier "local_c0") () ")"))) (; ";")) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00082930:\n                FUN_0004c930();" (statement_identifier "LAB_00082930") (: ":") (expression_statement "FUN_0004c930();" (call_expression "FUN_0004c930()" (identifier "FUN_0004c930") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "FUN_000315c0(*piVar14 + 2,0);" (call_expression "FUN_000315c0(*piVar14 + 2,0)" (identifier "FUN_000315c0") (argument_list "(*piVar14 + 2,0)" (( "(") (binary_expression "*piVar14 + 2" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "2")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" (identifier "FUN_00032090") (argument_list "(0xfffffff7)" (( "(") (number_literal "0xfffffff7") () ")"))) (; ";")) (expression_statement "piVar28 = piVar14;" (assignment_expression "piVar28 = piVar14" (identifier "piVar28") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" (identifier "local_24") (= "=") (identifier "piVar14")) (; ";")) (goto_statement "goto LAB_00082986;" (goto "goto") (statement_identifier "LAB_00082986") (; ";")) (} "}"))) (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] = iVar18;" (assignment_expression "piVar20[0xb] = iVar18" (subscript_expression "piVar20[0xb]" (identifier "piVar20") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "FUN_000315c0(iVar18,local_c0,piVar20,piVar20);" (call_expression "FUN_000315c0(iVar18,local_c0,piVar20,piVar20)" (identifier "FUN_000315c0") (argument_list "(iVar18,local_c0,piVar20,piVar20)" (( "(") (identifier "iVar18") (, ",") (identifier "local_c0") (, ",") (identifier "piVar20") (, ",") (identifier "piVar20") () ")"))) (; ";")) (expression_statement "FUN_000315c0(local_c0,0);" (call_expression "FUN_000315c0(local_c0,0)" (identifier "FUN_000315c0") (argument_list "(local_c0,0)" (( "(") (identifier "local_c0") (, ",") (number_literal "0") () ")"))) (; ";")) (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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);" (call_expression "FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fb4)" (identifier "FUN_0003eec0") (argument_list "(piVar20,1,unaff_EBP + 0x28fb4)" (( "(") (identifier "piVar20") (, ",") (number_literal "1") (, ",") (binary_expression "unaff_EBP + 0x28fb4" (identifier "unaff_EBP") (+ "+") (number_literal "0x28fb4")) () ")"))) (; ";")) (expression_statement "iVar13 = FUN_00070950();" (assignment_expression "iVar13 = FUN_00070950()" (identifier "iVar13") (= "=") (call_expression "FUN_00070950()" (identifier "FUN_00070950") (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 (iVar13 == 0) {\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_c0 = FUN_000315c0(iVar17,0,0,0);\n                uVar21 = FUN_000315c0(0,0);\nLAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);\n                goto LAB_00083747;\n              }" ({ "{") (expression_statement "local_c0 = FUN_000315c0(iVar17,0,0,0);" (assignment_expression "local_c0 = FUN_000315c0(iVar17,0,0,0)" (identifier "local_c0") (= "=") (call_expression "FUN_000315c0(iVar17,0,0,0)" (identifier "FUN_000315c0") (argument_list "(iVar17,0,0,0)" (( "(") (identifier "iVar17") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar21 = FUN_000315c0(0,0);" (assignment_expression "uVar21 = FUN_000315c0(0,0)" (identifier "uVar21") (= "=") (call_expression "FUN_000315c0(0,0)" (identifier "FUN_000315c0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (labeled_statement "LAB_00083923:\n                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);" (statement_identifier "LAB_00083923") (: ":") (expression_statement "uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);" (assignment_expression "uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21)" (identifier "uVar21") (= "=") (call_expression "FUN_000315c0(iVar18,0,uVar21,uVar21)" (identifier "FUN_000315c0") (argument_list "(iVar18,0,uVar21,uVar21)" (( "(") (identifier "iVar18") (, ",") (number_literal "0") (, ",") (identifier "uVar21") (, ",") (identifier "uVar21") () ")")))) (; ";"))) (goto_statement "goto LAB_00083747;" (goto "goto") (statement_identifier "LAB_00083747") (; ";")) (} "}"))) (} "}")))) (if_statement "if (*(int *)(param_2 + 0x30) != 0) {\n              FUN_000433a0();\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_000433a0();\n            }" ({ "{") (expression_statement "FUN_000433a0();" (call_expression "FUN_000433a0()" (identifier "FUN_000433a0") (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_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }" (else "else") (compound_statement "{\nLAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);\n        }" ({ "{") (labeled_statement "LAB_00082701:\n          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);" (statement_identifier "LAB_00082701") (: ":") (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7)" (identifier "FUN_0003c160") (argument_list "(piVar20,unaff_EBP + 0x2b8e7)" (( "(") (identifier "piVar20") (, ",") (binary_expression "unaff_EBP + 0x2b8e7" (identifier "unaff_EBP") (+ "+") (number_literal "0x2b8e7")) () ")"))) (; ";"))) (} "}")))) (if_statement "if (piVar20[9] == 0) {\n          local_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\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_c4 = 0;\n          local_d0 = (byte *)0x0;\nLAB_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }\nLAB_0008273c:\n          param_3[3] = local_68;\n          param_3[4] = local_64;\n          if (local_c4 != 0) {\n            FUN_00043210();\n          }\n          goto LAB_00081db1;\n        }" ({ "{") (expression_statement "local_c4 = 0;" (assignment_expression "local_c4 = 0" (identifier "local_c4") (= "=") (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_00082732:\n          if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }" (statement_identifier "LAB_00082732") (: ":") (if_statement "if ((param_2[4] & 0x20) != 0) {\n            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\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            iVar18 = **(int **)(param_2 + 0x1c);\n            piVar20 = (int *)FUN_00031ab0();\n            if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }\n          }" ({ "{") (expression_statement "iVar18 = **(int **)(param_2 + 0x1c);" (assignment_expression "iVar18 = **(int **)(param_2 + 0x1c)" (identifier "iVar18") (= "=") (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_00031ab0();" (assignment_expression "piVar20 = (int *)FUN_00031ab0()" (identifier "piVar20") (= "=") (cast_expression "(int *)FUN_00031ab0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00031ab0()" (identifier "FUN_00031ab0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar20 == (int *)0x0) {\n              local_d0 = (byte *)0x7;\n            }\n            else {\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\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 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }" (else "else") (compound_statement "{\n              if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }\n              do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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              iVar18 = *piVar20;\n              *piVar20 = iVar18 + -1;\n              if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }\n            }" ({ "{") (if_statement "if (0 < iVar18) {\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }" (if "if") (parenthesized_expression "(0 < iVar18)" (( "(") (binary_expression "0 < iVar18" (number_literal "0") (< "<") (identifier "iVar18")) () ")")) (compound_statement "{\n                iVar27 = 0;\n                do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);\n              }" ({ "{") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                } while (iVar18 != iVar27);" (do "do") (compound_statement "{\n                  iVar11 = FUN_0004c840(iVar27);\n                  piVar20[iVar27 + 5] = iVar11;\n                  if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }\n                  iVar27 = iVar27 + 1;\n                }" ({ "{") (expression_statement "iVar11 = FUN_0004c840(iVar27);" (assignment_expression "iVar11 = FUN_0004c840(iVar27)" (identifier "iVar11") (= "=") (call_expression "FUN_0004c840(iVar27)" (identifier "FUN_0004c840") (argument_list "(iVar27)" (( "(") (identifier "iVar27") () ")")))) (; ";")) (expression_statement "piVar20[iVar27 + 5] = iVar11;" (assignment_expression "piVar20[iVar27 + 5] = iVar11" (subscript_expression "piVar20[iVar27 + 5]" (identifier "piVar20") ([ "[") (binary_expression "iVar27 + 5" (identifier "iVar27") (+ "+") (number_literal "5")) (] "]")) (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (iVar11 == 0) {\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);\n                  }" ({ "{") (expression_statement "piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);" (assignment_expression "piVar20[iVar27 + 5] = *(int *)(iVar15 + 8)" (subscript_expression "piVar20[iVar27 + 5]" (identifier "piVar20") ([ "[") (binary_expression "iVar27 + 5" (identifier "iVar27") (+ "+") (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 "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != iVar27)" (( "(") (binary_expression "iVar18 != iVar27" (identifier "iVar18") (!= "!=") (identifier "iVar27")) () ")")) (; ";")) (} "}"))) (do_statement "do {\n                iVar15 = 0;\n                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {\n                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[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                  iVar27 = unaff_EBP + 0x5d8e3;\n                  if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }\n                  *(int *)(iVar27 + 8) = iVar18;\n                  *piVar20 = *piVar20 + 1;\n                  FUN_00032090(0xfffffff7);\n                  pbVar4 = param_2 + iVar15 * 4 + 0x14;\n                  pbVar4[0] = 0xff;\n                  pbVar4[1] = 0xff;\n                  pbVar4[2] = 0xff;\n                  pbVar4[3] = 0xff;\n                  if (iVar15 == 1) break;\n                  iVar15 = 1;\n                }" ({ "{") (expression_statement "iVar27 = unaff_EBP + 0x5d8e3;" (assignment_expression "iVar27 = unaff_EBP + 0x5d8e3" (identifier "iVar27") (= "=") (binary_expression "unaff_EBP + 0x5d8e3" (identifier "unaff_EBP") (+ "+") (number_literal "0x5d8e3"))) (; ";")) (if_statement "if (*(char *)(*local_c8 + 0x4d) == '\0') {\n                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\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                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;\n                  }" ({ "{") (expression_statement "iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;" (assignment_expression "iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14" (identifier "iVar27") (= "=") (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")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar27 + 8) = iVar18;" (assignment_expression "*(int *)(iVar27 + 8) = iVar18" (pointer_expression "*(int *)(iVar27 + 8)" (* "*") (cast_expression "(int *)(iVar27 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + 8)" (( "(") (binary_expression "iVar27 + 8" (identifier "iVar27") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (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_00032090(0xfffffff7);" (call_expression "FUN_00032090(0xfffffff7)" (identifier "FUN_00032090") (argument_list "(0xfffffff7)" (( "(") (number_literal "0xfffffff7") () ")"))) (; ";")) (expression_statement "pbVar4 = param_2 + iVar15 * 4 + 0x14;" (assignment_expression "pbVar4 = param_2 + iVar15 * 4 + 0x14" (identifier "pbVar4") (= "=") (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 "pbVar4[0] = 0xff;" (assignment_expression "pbVar4[0] = 0xff" (subscript_expression "pbVar4[0]" (identifier "pbVar4") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar4[1] = 0xff;" (assignment_expression "pbVar4[1] = 0xff" (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar4[2] = 0xff;" (assignment_expression "pbVar4[2] = 0xff" (subscript_expression "pbVar4[2]" (identifier "pbVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar4[3] = 0xff;" (assignment_expression "pbVar4[3] = 0xff" (subscript_expression "pbVar4[3]" (identifier "pbVar4") ([ "[") (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 "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" (identifier "iVar18") (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "*piVar20 = iVar18 + -1;" (assignment_expression "*piVar20 = iVar18 + -1" (pointer_expression "*piVar20" (* "*") (identifier "piVar20")) (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar18 + -1 == 0) {\n                FUN_0002a720();\n              }" (if "if") (parenthesized_expression "(iVar18 + -1 == 0)" (( "(") (binary_expression "iVar18 + -1 == 0" (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_0002a720();\n              }" ({ "{") (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" (identifier "FUN_0002a720") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (labeled_statement "LAB_0008273c:\n          param_3[3] = local_68;" (statement_identifier "LAB_0008273c") (: ":") (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_c4 != 0) {\n            FUN_00043210();\n          }" (if "if") (parenthesized_expression "(local_c4 != 0)" (( "(") (binary_expression "local_c4 != 0" (identifier "local_c4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00043210();\n          }" ({ "{") (expression_statement "FUN_00043210();" (call_expression "FUN_00043210()" (identifier "FUN_00043210") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00081db1;" (goto "goto") (statement_identifier "LAB_00081db1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }" (else "else") (compound_statement "{\n        iVar27 = *(int *)(param_2 + 0x3c);\n        if (*(int *)(param_2 + 0x44) != 0) {\n          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;\n          goto LAB_00081e83;\n        }\n        pbVar4 = *(byte **)(param_2 + 0x34);\n        pbVar26 = param_2;\n        if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }\n        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);\n        do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);\n      }" ({ "{") (expression_statement "iVar27 = *(int *)(param_2 + 0x3c);" (assignment_expression "iVar27 = *(int *)(param_2 + 0x3c)" (identifier "iVar27") (= "=") (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_00082701;\n          goto LAB_00081e83;\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_00082701;\n          goto LAB_00081e83;\n        }" ({ "{") (if_statement "if ((uVar12 & 0x2000) != 0) goto LAB_00082701;" (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_00082701;" (goto "goto") (statement_identifier "LAB_00082701") (; ";"))) (goto_statement "goto LAB_00081e83;" (goto "goto") (statement_identifier "LAB_00081e83") (; ";")) (} "}"))) (expression_statement "pbVar4 = *(byte **)(param_2 + 0x34);" (assignment_expression "pbVar4 = *(byte **)(param_2 + 0x34)" (identifier "pbVar4") (= "=") (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 "pbVar26 = param_2;" (assignment_expression "pbVar26 = param_2" (identifier "pbVar26") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (pbVar4 == (byte *)0x0) {\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }\n        else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" (if "if") (parenthesized_expression "(pbVar4 == (byte *)0x0)" (( "(") (binary_expression "pbVar4 == (byte *)0x0" (identifier "pbVar4") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000830eb:\n          local_d0 = (byte *)0x1;\n          iVar18 = unaff_EBP + 0x29350;\n        }" ({ "{") (labeled_statement "LAB_000830eb:\n          local_d0 = (byte *)0x1;" (statement_identifier "LAB_000830eb") (: ":") (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"))) (; ";"))) (expression_statement "iVar18 = unaff_EBP + 0x29350;" (assignment_expression "iVar18 = unaff_EBP + 0x29350" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x29350" (identifier "unaff_EBP") (+ "+") (number_literal "0x29350"))) (; ";")) (} "}")) (else_clause "else {\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" (else "else") (compound_statement "{\n          local_d0 = (byte *)0x1;\n          pbVar6 = pbVar4;\n          do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);\n          iVar18 = unaff_EBP + 0x29531;\n          if (local_d0 == (byte *)0x1) goto LAB_000830eb;\n        }" ({ "{") (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"))) (; ";")) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" (identifier "pbVar6") (= "=") (identifier "pbVar4")) (; ";")) (do_statement "do {\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);" (do "do") (compound_statement "{\n            pbVar26 = pbVar6;\n            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));\n            if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }\n            pbVar6 = *(byte **)(pbVar26 + 0x34);\n          }" ({ "{") (expression_statement "pbVar26 = pbVar6;" (assignment_expression "pbVar26 = pbVar6" (identifier "pbVar26") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));" (assignment_expression "local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0))" (identifier "local_d0") (= "=") (cast_expression "(byte *)((int)local_d0 + (uint)(iVar27 == 0))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + (uint)(iVar27 == 0))" (( "(") (binary_expression "(int)local_d0 + (uint)(iVar27 == 0)" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (call_expression "(uint)(iVar27 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (if_statement "if (*(int *)(pbVar26 + 0x44) != 0) {\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }" (if "if") (parenthesized_expression "(*(int *)(pbVar26 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(pbVar26 + 0x44) != 0" (pointer_expression "*(int *)(pbVar26 + 0x44)" (* "*") (cast_expression "(int *)(pbVar26 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 0x44)" (( "(") (binary_expression "pbVar26 + 0x44" (identifier "pbVar26") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;\n              piVar28 = *(int **)(param_2 + 0x20);\n              local_c0 = **(undefined4 **)(param_2 + 0x1c);\n              local_d0 = pbVar4;\n              goto LAB_000827ee;\n            }" ({ "{") (if_statement "if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;" (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_00081e83;" (goto "goto") (statement_identifier "LAB_00081e83") (; ";"))) (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 = pbVar4;" (assignment_expression "local_d0 = pbVar4" (identifier "local_d0") (= "=") (identifier "pbVar4")) (; ";")) (goto_statement "goto LAB_000827ee;" (goto "goto") (statement_identifier "LAB_000827ee") (; ";")) (} "}"))) (expression_statement "pbVar6 = *(byte **)(pbVar26 + 0x34);" (assignment_expression "pbVar6 = *(byte **)(pbVar26 + 0x34)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(pbVar26 + 0x34)" (* "*") (cast_expression "(byte **)(pbVar26 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar26 + 0x34)" (( "(") (binary_expression "pbVar26 + 0x34" (identifier "pbVar26") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(byte **)(pbVar26 + 0x34) != (byte *)0x0)" (( "(") (binary_expression "*(byte **)(pbVar26 + 0x34) != (byte *)0x0" (pointer_expression "*(byte **)(pbVar26 + 0x34)" (* "*") (cast_expression "(byte **)(pbVar26 + 0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar26 + 0x34)" (( "(") (binary_expression "pbVar26 + 0x34" (identifier "pbVar26") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "iVar18 = unaff_EBP + 0x29531;" (assignment_expression "iVar18 = unaff_EBP + 0x29531" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x29531" (identifier "unaff_EBP") (+ "+") (number_literal "0x29531"))) (; ";")) (if_statement "if (local_d0 == (byte *)0x1) goto LAB_000830eb;" (if "if") (parenthesized_expression "(local_d0 == (byte *)0x1)" (( "(") (binary_expression "local_d0 == (byte *)0x1" (identifier "local_d0") (== "==") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (goto_statement "goto LAB_000830eb;" (goto "goto") (statement_identifier "LAB_000830eb") (; ";"))) (} "}")))) (expression_statement "FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);" (call_expression "FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18)" (identifier "FUN_0003eec0") (argument_list "(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18)" (( "(") (identifier "piVar20") (, ",") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x28f9d" (identifier "unaff_EBP") (+ "+") (number_literal "0x28f9d")) (, ",") (identifier "local_d0") (, ",") (identifier "iVar18") () ")"))) (; ";")) (do_statement "do {\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        } while (pbVar26 != (byte *)0x0);" (do "do") (compound_statement "{\n          FUN_00079470(0,0,&local_74,1,1);\n          if (iVar27 != 0) break;\n          *(short *)(pbVar26 + 2) = (short)local_d0;\n          pbVar26 = *(byte **)(pbVar26 + 0x38);\n        }" ({ "{") (expression_statement "FUN_00079470(0,0,&local_74,1,1);" (call_expression "FUN_00079470(0,0,&local_74,1,1)" (identifier "FUN_00079470") (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") () ")"))) (; ";")) (if_statement "if (iVar27 != 0) break;" (if "if") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(short *)(pbVar26 + 2) = (short)local_d0;" (assignment_expression "*(short *)(pbVar26 + 2) = (short)local_d0" (pointer_expression "*(short *)(pbVar26 + 2)" (* "*") (cast_expression "(short *)(pbVar26 + 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 2)" (( "(") (binary_expression "pbVar26 + 2" (identifier "pbVar26") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(short)local_d0" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_d0"))) (; ";")) (expression_statement "pbVar26 = *(byte **)(pbVar26 + 0x38);" (assignment_expression "pbVar26 = *(byte **)(pbVar26 + 0x38)" (identifier "pbVar26") (= "=") (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 "(pbVar26 != (byte *)0x0)" (( "(") (binary_expression "pbVar26 != (byte *)0x0" (identifier "pbVar26") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")))) (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_00081db1;" (goto "goto") (statement_identifier "LAB_00081db1") (; ";")) (} "}"))) (expression_statement "cVar3 = *pcVar24;" (assignment_expression "cVar3 = *pcVar24" (identifier "cVar3") (= "=") (pointer_expression "*pcVar24" (* "*") (identifier "pcVar24"))) (; ";")) (if_statement "if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" (if "if") (parenthesized_expression "(cVar3 == -0x7a)" (( "(") (binary_expression "cVar3 == -0x7a" (identifier "cVar3") (== "==") (number_literal "-0x7a")) () ")")) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289ee;\n    }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289ee;" (assignment_expression "iVar18 = unaff_EBP + 0x289ee" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289ee" (identifier "unaff_EBP") (+ "+") (number_literal "0x289ee"))) (; ";")) (} "}")) (else_clause "else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" (else "else") (if_statement "if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" (if "if") (parenthesized_expression "(cVar3 == -0x79)" (( "(") (binary_expression "cVar3 == -0x79" (identifier "cVar3") (== "==") (number_literal "-0x79")) () ")")) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289e4;\n    }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289e4;" (assignment_expression "iVar18 = unaff_EBP + 0x289e4" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289e4" (identifier "unaff_EBP") (+ "+") (number_literal "0x289e4"))) (; ";")) (} "}")) (else_clause "else {\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" (else "else") (compound_statement "{\n      iVar18 = unaff_EBP + 0x289f5;\n      if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }\n    }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289f5;" (assignment_expression "iVar18 = unaff_EBP + 0x289f5" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289f5" (identifier "unaff_EBP") (+ "+") (number_literal "0x289f5"))) (; ";")) (if_statement "if (cVar3 == -0x7b) {\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }" (if "if") (parenthesized_expression "(cVar3 == -0x7b)" (( "(") (binary_expression "cVar3 == -0x7b" (identifier "cVar3") (== "==") (number_literal "-0x7b")) () ")")) (compound_statement "{\n        iVar18 = unaff_EBP + 0x289da;\n        iVar15 = unaff_EBP + 0x28f97;\n        goto LAB_00081d80;\n      }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289da;" (assignment_expression "iVar18 = unaff_EBP + 0x289da" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289da" (identifier "unaff_EBP") (+ "+") (number_literal "0x289da"))) (; ";")) (expression_statement "iVar15 = unaff_EBP + 0x28f97;" (assignment_expression "iVar15 = unaff_EBP + 0x28f97" (identifier "iVar15") (= "=") (binary_expression "unaff_EBP + 0x28f97" (identifier "unaff_EBP") (+ "+") (number_literal "0x28f97"))) (; ";")) (goto_statement "goto LAB_00081d80;" (goto "goto") (statement_identifier "LAB_00081d80") (; ";")) (} "}"))) (} "}")))))) (expression_statement "iVar15 = unaff_EBP + 0x28f97;" (assignment_expression "iVar15 = unaff_EBP + 0x28f97" (identifier "iVar15") (= "=") (binary_expression "unaff_EBP + 0x28f97" (identifier "unaff_EBP") (+ "+") (number_literal "0x28f97"))) (; ";")) (} "}")) (else_clause "else {\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" (else "else") (compound_statement "{\n    cVar3 = *pcVar24;\n    if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }\n    iVar15 = unaff_EBP + 0x28e22;\n  }" ({ "{") (expression_statement "cVar3 = *pcVar24;" (assignment_expression "cVar3 = *pcVar24" (identifier "cVar3") (= "=") (pointer_expression "*pcVar24" (* "*") (identifier "pcVar24"))) (; ";")) (if_statement "if (cVar3 == -0x7a) {\n      iVar18 = unaff_EBP + 0x289ee;\n    }\n    else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" (if "if") (parenthesized_expression "(cVar3 == -0x7a)" (( "(") (binary_expression "cVar3 == -0x7a" (identifier "cVar3") (== "==") (number_literal "-0x7a")) () ")")) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289ee;\n    }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289ee;" (assignment_expression "iVar18 = unaff_EBP + 0x289ee" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289ee" (identifier "unaff_EBP") (+ "+") (number_literal "0x289ee"))) (; ";")) (} "}")) (else_clause "else if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" (else "else") (if_statement "if (cVar3 == -0x79) {\n      iVar18 = unaff_EBP + 0x289e4;\n    }\n    else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" (if "if") (parenthesized_expression "(cVar3 == -0x79)" (( "(") (binary_expression "cVar3 == -0x79" (identifier "cVar3") (== "==") (number_literal "-0x79")) () ")")) (compound_statement "{\n      iVar18 = unaff_EBP + 0x289e4;\n    }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289e4;" (assignment_expression "iVar18 = unaff_EBP + 0x289e4" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289e4" (identifier "unaff_EBP") (+ "+") (number_literal "0x289e4"))) (; ";")) (} "}")) (else_clause "else {\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" (else "else") (compound_statement "{\n      if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }\n      iVar18 = unaff_EBP + 0x289da;\n    }" ({ "{") (if_statement "if (cVar3 != -0x7b) {\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }" (if "if") (parenthesized_expression "(cVar3 != -0x7b)" (( "(") (binary_expression "cVar3 != -0x7b" (identifier "cVar3") (!= "!=") (number_literal "-0x7b")) () ")")) (compound_statement "{\n        iVar18 = unaff_EBP + 0x289f5;\n        iVar15 = unaff_EBP + 0x28e22;\n        goto LAB_00081d80;\n      }" ({ "{") (expression_statement "iVar18 = unaff_EBP + 0x289f5;" (assignment_expression "iVar18 = unaff_EBP + 0x289f5" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289f5" (identifier "unaff_EBP") (+ "+") (number_literal "0x289f5"))) (; ";")) (expression_statement "iVar15 = unaff_EBP + 0x28e22;" (assignment_expression "iVar15 = unaff_EBP + 0x28e22" (identifier "iVar15") (= "=") (binary_expression "unaff_EBP + 0x28e22" (identifier "unaff_EBP") (+ "+") (number_literal "0x28e22"))) (; ";")) (goto_statement "goto LAB_00081d80;" (goto "goto") (statement_identifier "LAB_00081d80") (; ";")) (} "}"))) (expression_statement "iVar18 = unaff_EBP + 0x289da;" (assignment_expression "iVar18 = unaff_EBP + 0x289da" (identifier "iVar18") (= "=") (binary_expression "unaff_EBP + 0x289da" (identifier "unaff_EBP") (+ "+") (number_literal "0x289da"))) (; ";")) (} "}")))))) (expression_statement "iVar15 = unaff_EBP + 0x28e22;" (assignment_expression "iVar15 = unaff_EBP + 0x28e22" (identifier "iVar15") (= "=") (binary_expression "unaff_EBP + 0x28e22" (identifier "unaff_EBP") (+ "+") (number_literal "0x28e22"))) (; ";")) (} "}")))) (labeled_statement "LAB_00081d80:\n  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);" (statement_identifier "LAB_00081d80") (: ":") (expression_statement "FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);" (call_expression "FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18)" (identifier "FUN_0003c160") (argument_list "(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18)" (( "(") (identifier "piVar20") (, ",") (binary_expression "unaff_EBP + 0x2b8bb" (identifier "unaff_EBP") (+ "+") (number_literal "0x2b8bb")) (, ",") (identifier "iVar15") (, ",") (identifier "iVar18") () ")"))) (; ";"))) (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_00081db1:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return (uint)local_d0;\n  }" (statement_identifier "LAB_00081db1") (: ":") (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_000a9ea0();" (call_expression "FUN_000a9ea0()" (identifier "FUN_000a9ea0") (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;
  type_5 var_30;
  type_6 *psVar3;
  type_7 *var_20;
  type_8 var_50;
  type_2 *pSVar6;
  short sVar7;
  type_9 var_54;
  type_10 LVar9;
  short var_47;
  char *pcVar11;
  int var_62;
  type_8 var_5;
  int var_12;
  type_11 *var_9;
  int *var_17;
  type_12 *var_60;
  type_13 *var_66;
  int var_29;
  int var_33;
  int var_38;
  type_4 var_35;
  int var_42;
  int var_14;
  int iVar24;
  type_14 *pOVar25;
  type_15 *var_65;
  char *pcVar27;
  type_16 *pVVar28;
  type_8 var_48;
  short var_49;
  type_17 *pDVar31;
  int extraout_ECX;
  type_1 *extraout_ECX_00;
  int extraout_ECX_01;
  type_18 *var_13;
  type_8 var_11;
  type_2 *var_24;
  type_19 *pSVar35;
  type_2 *var_70;
  type_2 *var_67;
  type_3 *var_57;
  type_20 *pSVar39;
  int var_1;
  bool bVar40;
  type_3 *in_stack_ffffff18;
  type_3 *pDest_00;
  char *in_stack_ffffff1c;
  char *in_stack_ffffff20;
  type_1 *pPVar41;
  type_1 *iBreak;
  type_2 *in_stack_ffffff24;
  type_21 in_stack_ffffff28;
  type_2 *var_43;
  type_16 *var_2;
  type_16 *var_69;
  type_8 var_44;
  type_8 var_53;
  type_12 *var_6;
  int var_7;
  type_3 *local_ac;
  type_15 *var_22;
  int local_a0;
  int local_9c;
  type_15 *local_98;
  int local_94;
  int local_90;
  int local_80;
  type_3 dest;
  type_3 destA;
  int var_46;
  type_8 local_38;
  int local_34;
  int local_30;
  type_7 local_2c [20];
  type_22 x;
  
  x.n = 0x81ced;
  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 *)0x82be9;
        var_2 = var_3(pParse);
      }
      if (dest.eDest == '\f') {
        in_stack_ffffff18 = (type_3 *)0x0;
        var_4(var_2,100,dest.iSDParm,var_68->pEList->nExpr,0);
        dest.eDest = '\x0e';
      }
      var_5 = var_68->selFlags;
      if ((var_5 & 0x400) == 0) {
        if ((var_5 & 0x2000) == 0) {
LAB_00081e83:
          var_6 = var_68->pOrderBy;
          if (var_6 != (type_12 *)0x0) {
            psVar3 = pParse->db;
            pVVar28 = pParse->pVdbe;
            var_42 = pParse->nLabel + -1;
            var_62 = pParse->nLabel + -2;
            pParse->nLabel = var_62;
            var_67 = var_68->pPrior;
            var_5 = (type_8)var_68->op;
            var_7 = var_6->nExpr;
            if (((var_5 != 0x85) && (psVar3->mallocFailed == '\0')) && (0 < var_68->pEList->nExpr)) {
              var_11 = 1;
              do {
                if (var_7 < 1) {
                  if (var_7 == 0) {
LAB_00081f4a:
                    var_46 = 0;
                    local_38 = 0;
                    var_9 = var_8(psVar3,0x98,(type_22 *)&var_46,0);
                    if (var_9 == (type_11 *)0x0) {
                      var_43 = (type_2 *)0x7;
                      goto LAB_00081db1;
                    }
                    var_9->flags = var_9->flags | 0x400;
                    (var_9->u).iValue = var_11;
                    var_6 = var_10((type_1 *)pParse->db,var_6,var_9);
                    var_68->pOrderBy = var_6;
                    if (var_6 != (type_12 *)0x0) {
                      var_6->a[var_7].u.x.iOrderByCol = (type_24)var_11;
                      var_7 = var_7 + 1;
                    }
                  }
                }
                else if (var_11 != var_6->a[0].u.x.iOrderByCol) {
                  var_12 = 0;
                  var_13 = var_6->a;
                  do {
                    var_12 = var_12 + 1;
                    if (var_12 == var_7) goto LAB_00081f4a;
                    var_14 = (int)(var_13 + 1);
                    var_13 = var_13 + 1;
                  } while (*(type_25 *)(var_14 + 0xc) != var_11);
                }
                var_11 = var_11 + 1;
              } while ((psVar3->mallocFailed == '\0') && ((int)var_11 <= var_68->pEList->nExpr));
            }
            local_ac = (type_3 *)&var_46;
            var_17 = (int *)var_15(psVar3,var_16(in_stack_ffffff28,in_stack_ffffff24));
            local_98 = (type_15 *)0x0;
            if (var_17 != (int *)0x0) {
              *var_17 = var_7;
              if (0 < var_7) {
                var_12 = 0;
                do {
                  *(type_8 *)((int)var_17 + var_12 + 4) = (&var_6->a[0].u)[var_12].x.iOrderByCol - 1;
                  var_12 = var_12 + 4;
                } while (var_7 * 4 != var_12);
              }
              local_98 = var_18(pParse,var_68,(int)var_6->a);
            }
            var_68->pOrderBy = var_6;
            var_60 = var_19(pParse->db,var_6,0);
            var_67->pOrderBy = var_60;
            if (var_5 == 0x85) {
              var_22 = (type_15 *)0x0;
              local_90 = 0;
            }
            else {
              var_20 = (type_7 *)var_68->pEList->nExpr;
              local_90 = pParse->nMem + 1;
              pParse->nMem = (int)(var_20 + pParse->nMem + 1);
              var_4(pVVar28,0x45,0,local_90,0);
              var_22 = var_21(psVar3,(int)var_20,1);
              if ((var_22 != (type_15 *)0x0) && (0 < (int)var_20)) {
                var_24 = (type_2 *)0x0;
                do {
                  var_66 = var_23(pParse,(type_2 *)&var_68->pEList,(int)var_68->pPrior,var_24);
                  var_22->aColl[(int)var_24] = var_66;
                  var_22->aSortFlags[(int)var_24] = '\0';
                  var_24 = (type_2 *)&var_24->field_0x1;
                } while ((type_2 *)var_20 != var_24);
              }
            }
            var_68->pPrior = (type_2 *)0x0;
            var_60 = var_68->pOrderBy;
            var_67->pNext = (type_2 *)0x0;
            var_25(pParse,(type_2 *)&var_68->pEList,var_60,"ORDER");
            if (var_67->pPrior == (type_2 *)0x0) {
              var_25
                        (pParse,(type_2 *)&var_67->pEList,var_67->pOrderBy,"ORDER");
            }
            var_26(pParse,var_68,var_42);
            var_12 = var_68->iLimit;
            if ((var_5 == 0x85) && (var_12 != 0)) {
              local_9c = pParse->nMem + 1;
              local_94 = pParse->nMem + 2;
              pParse->nMem = local_94;
              if (var_68->iOffset != 0) {
                var_12 = var_68->iOffset + 1;
              }
              var_4(pVVar28,0x4d,var_12,local_9c,0);
              var_4(pVVar28,0x4d,local_9c,local_94,0);
            }
            else {
              local_94 = 0;
              local_9c = 0;
            }
            if (var_68->pLimit != (type_11 *)0x0) {
              var_27(psVar3,var_68->pLimit);
            }
            var_68->pLimit = (type_11 *)0x0;
            destA.eDest = '\r';
            destA.iSDParm2 = 0;
            destA.zAffSdst = (char *)0x0;
            destA.iSdst = 0;
            var_29 = pParse->nMem;
            destA.nSdst = 0;
            var_46 = var_28(var_46._1_3_,0xd);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            var_11 = var_29 + 2;
            var_12 = var_29 + 1;
            local_2c._0_4_ = 0;
            var_14 = var_29 + 3;
            var_29 = var_29 + 4;
            pParse->nMem = var_29;
            var_30 = var_68->op;
            var_57 = (type_3 *)"EXCEPT";
            if ((var_30 != 0x86) && (var_57 = (type_3 *)"INTERSECT", var_30 != 0x87)) {
              var_57 = (type_3 *)"UNION ALL";
              if (var_30 != 0x85) {
                var_57 = (type_3 *)"UNION";
              }
            }
            destA.iSDParm = var_12;
            local_38 = var_11;
            var_31(pParse,'\x01',"MERGE (%s)");
            var_33 = var_4(pVVar28,0xd,var_12,0,pVVar28->nOp + 1);
            var_67->iLimit = local_9c;
            var_31(pParse,'\x01',"LEFT");
            var_32(pParse,var_67,&destA);
            var_4(pVVar28,0x42,var_12,0,0);
            pPVar41 = pVVar28->pParse;
            pPVar41->nTempReg = '\0';
            pPVar41->nRangeReg = 0;
            if (var_33 < 0) {
              var_33 = pVVar28->nOp + -1;
            }
            pOVar25 = (type_14 *)&dummy_22674;
            if (pVVar28->db->mallocFailed == '\0') {
              pOVar25 = pVVar28->aOp + var_33;
            }
            pOVar25->p2 = pVVar28->nOp;
            var_38 = var_4(pVVar28,0xd,var_11,0,pVVar28->nOp + 1);
            var_33 = var_68->iLimit;
            iVar24 = var_68->iOffset;
            var_68->iOffset = 0;
            var_68->iLimit = local_94;
            var_31(pParse,'\x01',"RIGHT");
            var_32(pParse,var_68,local_ac);
            var_68->iOffset = iVar24;
            var_68->iLimit = var_33;
            var_4(pVVar28,0x42,var_11,0,0);
            pPVar41 = pVVar28->pParse;
            pPVar41->nTempReg = '\0';
            pPVar41->nRangeReg = 0;
            var_33 = var_34
                               (pParse,(type_2 *)&destA.iSdst,(type_3 *)&destA.nSdst,pDest,
                                var_14,local_90,var_22,var_42,var_57,in_stack_ffffff24);
            local_80 = 0;
            if (var_5 - 0x84 < 2) {
              local_80 = var_34
                                   (pParse,(type_2 *)&local_30,(type_3 *)local_2c,pDest,var_29,
                                    local_90,var_22,var_42,var_57,in_stack_ffffff24);
            }
            if ((var_22 != (type_15 *)0x0) &&
               (var_35 = var_22->nRef - 1, var_22->nRef = var_35, var_35 == 0)) {
              var_36(var_22);
            }
            iVar24 = var_42;
            local_90 = var_42;
            if (1 < var_5 - 0x86) {
              iVar24 = var_4(pVVar28,0xc,var_29,local_80,0);
              local_90 = var_4(pVVar28,0xe,var_11,var_42,0);
              var_4(pVVar28,0xb,0,iVar24,0);
              LVar9 = var_37(var_68->nSelectRow,var_67->nSelectRow);
              var_68->nSelectRow = LVar9;
            }
            if (var_5 == 0x87) {
              if (var_67->nSelectRow < var_68->nSelectRow) {
                var_68->nSelectRow = var_67->nSelectRow;
              }
              var_22 = (type_15 *)var_4(pVVar28,0xc,var_14,var_33,0);
              var_4(pVVar28,0xe,var_12,iVar24,0);
              var_4(pVVar28,0xb,0,var_62,0);
              local_a0 = (int)var_22 + 1;
              local_ac = (type_3 *)iVar24;
            }
            else {
              local_ac = (type_3 *)var_4(pVVar28,0xc,var_14,var_33,0);
              var_4(pVVar28,0xe,var_12,var_42,0);
              var_4(pVVar28,0xb,0,(int)local_ac,0);
              local_a0 = var_4(pVVar28,0xc,var_14,var_33,0);
              var_4(pVVar28,0xe,var_12,iVar24,0);
              var_4(pVVar28,0xb,0,var_62,0);
              var_22 = (type_15 *)local_a0;
              if (var_5 != 0x85) {
                var_22 = (type_15 *)var_4(pVVar28,0xe,var_12,iVar24,0);
                var_4(pVVar28,0xb,0,var_62,0);
              }
            }
            var_14 = pVVar28->nOp;
            if (var_5 - 0x84 < 2) {
              var_4(pVVar28,0xc,var_29,local_80,0);
            }
            var_4(pVVar28,0xe,var_11,(int)local_ac,0);
            var_4(pVVar28,0xb,0,var_62,0);
            var_29 = pVVar28->nOp + -1;
            if (-1 < var_38) {
              var_29 = var_38;
            }
            pOVar25 = (type_14 *)&dummy_22674;
            if (pVVar28->db->mallocFailed == '\0') {
              pOVar25 = pVVar28->aOp + var_29;
            }
            pOVar25->p2 = pVVar28->nOp;
            var_4(pVVar28,0xe,var_12,local_90,0);
            var_4(pVVar28,0xe,var_11,(int)local_ac,0);
            var_39(pVVar28,var_62);
            var_62 = var_4(pVVar28,0x55,0,0,0);
            var_40(pVVar28,var_62,(char *)var_17,-0xf);
            var_62 = var_4(pVVar28,0x56,destA.iSdst,local_30,var_7);
            var_40(pVVar28,var_62,(char *)local_98,-9);
            if (0 < pVVar28->nOp) {
              pVVar28->aOp[pVVar28->nOp + -1].p5 = 1;
            }
            var_4(pVVar28,0x10,local_a0,(int)var_22,var_14);
            var_39(pVVar28,var_42);
            if (var_68->pPrior != (type_2 *)0x0) {
              var_41(psVar3,var_68->pPrior,1);
            }
            var_68->pPrior = var_67;
            var_67->pNext = var_68;
            var_42 = pParse->addrExplain;
            if (var_42 != 0) {
              pVVar28 = pParse->pVdbe;
              if (var_42 < 0) {
                var_42 = pVVar28->nOp + -1;
              }
              pOVar25 = (type_14 *)&dummy_22674;
              if (pVVar28->db->mallocFailed == '\0') {
                pOVar25 = pVVar28->aOp + var_42;
              }
              var_42 = pOVar25->p2;
            }
            pParse->addrExplain = var_42;
            var_43 = (type_2 *)(type_8)(pParse->nErr != 0);
            goto LAB_00081db1;
          }
          if (var_67->pPrior == (type_2 *)0x0) {
            var_31(pParse,'\x01',"COMPOUND QUERY");
            var_31(pParse,'\x01',"LEFT-MOST SUBQUERY");
          }
          var_30 = var_68->op;
          if (var_30 == 0x85) {
            var_67->iLimit = var_68->iLimit;
            var_67->iOffset = var_68->iOffset;
            var_67->pLimit = var_68->pLimit;
            var_43 = (type_2 *)var_32(pParse,var_67,&dest);
            var_68->pLimit = (type_11 *)0x0;
            if (var_43 == (type_2 *)0x0) {
              var_44 = var_67->iLimit;
              var_42 = var_67->iOffset;
              var_68->pPrior = (type_2 *)0x0;
              var_68->iLimit = var_44;
              var_68->iOffset = var_42;
              if (var_44 != 0) {
                var_44 = var_4(var_2,0x14,var_44,0,0);
                var_42 = var_68->iOffset;
                if (var_42 != 0) {
                  var_4(var_2,0x98,var_68->iLimit,var_42 + 1,var_42);
                }
              }
              var_31(pParse,'\x01',"UNION ALL");
              var_43 = (type_2 *)var_32(pParse,var_68,&dest);
              var_69 = (type_16 *)var_68->pPrior;
              LVar9 = var_67->nSelectRow;
              var_68->pPrior = var_67;
              LVar9 = var_37(var_68->nSelectRow,LVar9);
              var_68->nSelectRow = LVar9;
              if (((var_67->pLimit != (type_11 *)0x0) &&
                  (var_42 = var_45(var_67->pLimit->pLeft,&var_46), var_42 != 0)) &&
                 (0 < var_46)) {
                var_47 = var_68->nSelectRow;
                var_5 = var_46 >> 0x1f;
                if (var_46 < 8) {
                  if (var_46 == 1) {
                    if (0 < var_47) {
                      var_47 = 0;
                      goto LAB_00083ad6;
                    }
                  }
                  else {
                    var_48 = var_46;
                    var_11 = var_5;
                    sVar7 = 0x28;
                    do {
                      var_49 = sVar7;
                      var_50 = var_48 * 2;
                      if ((var_11 & 0x7fffffff) != 0 || (int)var_48 < 0) break;
                      var_11 = 0;
                      var_48 = var_50;
                      sVar7 = var_49 + -10;
                    } while (var_50 < 8);
                    if ((short)(var_49 + -0x14 + *(short *)(var_51 + (var_50 & 7) * 2)) < var_47) {
                      var_47 = 0x28;
                      var_53 = var_46;
                      do {
                        var_47 = var_47 + -10;
                        bVar40 = var_52(var_53,var_53);
                        var_53 = var_53 * 2;
                        if (var_5 * 2 + (type_8)bVar40 != 0) break;
                        var_5 = 0;
                      } while (var_53 < 8);
                      goto LAB_00083ac3;
                    }
                  }
                }
                else {
                  if (var_46 < 0) {
                    var_11 = 0x1f;
                    if (var_46 < 0) {
                      for (; var_5 >> var_11 == 0; var_11 = var_11 - 1) {
                      }
                    }
                    var_11 = var_11 ^ 0x1f;
                  }
                  else {
                    var_11 = 0x1f;
                    if (var_46 != 0) {
                      for (; (type_8)var_46 >> var_11 == 0; var_11 = var_11 - 1) {
                      }
                    }
                    var_11 = (var_11 ^ 0x1f) + 0x20;
                  }
                  var_11 = 0x3c - var_11;
                  var_54 = (type_9)var_11 & 0x1f;
                  var_48 = (type_8)var_46 >> var_54 | var_5 << 0x20 - var_54;
                  if ((var_11 & 0x20) != 0) {
                    var_48 = var_5 >> ((type_9)var_11 & 0x1f);
                  }
                  if ((short)((short)var_11 * 10 + 0x1e + *(short *)(var_51 + (var_48 & 7) * 2)) <
                      var_47) {
                    if (var_46 < 0) {
                      var_11 = 0x1f;
                      if (var_46 < 0) {
                        for (; var_5 >> var_11 == 0; var_11 = var_11 - 1) {
                        }
                      }
                      var_11 = var_11 ^ 0x1f;
                    }
                    else {
                      var_11 = 0x1f;
                      if (var_46 != 0) {
                        for (; (type_8)var_46 >> var_11 == 0; var_11 = var_11 - 1) {
                        }
                      }
                      var_11 = (var_11 ^ 0x1f) + 0x20;
                    }
                    var_11 = 0x3c - var_11;
                    var_47 = (short)var_11 * 10 + 0x28;
                    var_54 = (type_9)var_11 & 0x1f;
                    var_53 = (type_8)var_46 >> var_54 | var_5 << 0x20 - var_54;
                    if ((var_11 & 0x20) != 0) {
                      var_53 = var_5 >> ((type_9)var_11 & 0x1f);
                    }
LAB_00083ac3:
                    var_47 = var_47 + -10 + *(short *)(var_51 + (var_53 & 7) * 2);
LAB_00083ad6:
                    var_68->nSelectRow = var_47;
                  }
                }
              }
              if (var_44 != 0) {
                var_5 = var_2->nOp + -1;
                if (-1 < (int)var_44) {
                  var_5 = var_44;
                }
                pOVar25 = (type_14 *)&dummy_22674;
                if (var_2->db->mallocFailed == '\0') {
                  pOVar25 = var_2->aOp + var_5;
                }
                pOVar25->p2 = var_2->nOp;
              }
              goto LAB_00082ed0;
            }
          }
          else {
            if ((var_30 == 0x86) || (var_30 == 0x84)) {
              if (dest.eDest == '\x01') {
                var_44 = dest.iSDParm;
              }
              else {
                var_44 = pParse->nTab;
                pParse->nTab = var_44 + 1;
                var_42 = var_4(var_2,100,var_44,0,0);
                var_68->addrOpenEphm[0] = var_42;
                var_24 = var_68;
                do {
                  var_70 = var_24;
                  var_24 = var_70->pNext;
                } while (var_24 != (type_2 *)0x0);
                puVar1 = &var_70->selFlags;
                *puVar1 = *puVar1 | 0x20;
              }
              var_46 = var_28(var_46._1_3_,1);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              local_2c._0_4_ = 0;
              local_38 = var_44;
              var_43 = (type_2 *)var_32(pParse,var_67,(type_3 *)&var_46);
              if (var_43 != (type_2 *)0x0) goto LAB_00082b00;
              var_30 = var_68->op;
              var_9 = var_68->pLimit;
              var_68->pPrior = (type_2 *)0x0;
              var_68->pLimit = (type_11 *)0x0;
              if (var_30 == 0x86) {
                var_46 = var_28(var_46._1_3_,2);
                pcVar27 = "EXCEPT";
              }
              else {
                var_46 = var_28(var_46._1_3_,1);
                pcVar27 = "UNION ALL";
                if (var_30 != 0x85) {
                  pcVar27 = "INTERSECT";
                  if (var_30 != 0x87) {
                    pcVar27 = "UNION";
                  }
                }
              }
              var_31(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);
              var_43 = (type_2 *)var_32(pParse,var_68,(type_3 *)&var_46);
              var_69 = (type_16 *)var_68->pPrior;
              var_68->pOrderBy = (type_12 *)0x0;
              var_68->pPrior = var_67;
              if (var_68->op == 0x84) {
                LVar9 = var_37(var_68->nSelectRow,var_67->nSelectRow);
                var_68->nSelectRow = LVar9;
              }
              if (var_68->pLimit != (type_11 *)0x0) {
                var_27(psVar3,var_68->pLimit);
              }
              var_68->iLimit = 0;
              var_68->iOffset = 0;
              var_68->pLimit = var_9;
              if ((dest.eDest != '\x01') && (psVar3->mallocFailed == '\0')) {
                pDVar31 = (type_17 *)(pParse->nLabel + -1);
                pSVar39 = (type_20 *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar39;
                pPVar41 = pParse;
                var_26(pParse,var_68,(int)pDVar31);
                var_57 = (type_3 *)0x0;
                iBreak = pPVar41;
                var_4(var_2,0x25,var_44,(int)pDVar31,0);
                var_42 = var_2->nOp;
                var_55((type_1 *)0x0,(type_2 *)0x0,(int)&dest,pSVar39,pDVar31,var_57,
                                (int)pPVar41,(int)iBreak);
                var_39(var_2,(int)pSVar39);
                var_4(var_2,5,var_44,var_42,0);
                var_39(var_2,(int)pDVar31);
LAB_00083517:
                var_4(var_2,0x74,var_44,0,0);
              }
LAB_00082ed0:
              if (var_68->pNext == (type_2 *)0x0) {
                var_42 = pParse->addrExplain;
                if (var_42 != 0) {
                  pVVar28 = pParse->pVdbe;
                  if (var_42 < 0) {
                    var_42 = pVVar28->nOp + -1;
                  }
                  pOVar25 = (type_14 *)&dummy_22674;
                  if (pVVar28->db->mallocFailed == '\0') {
                    pOVar25 = pVVar28->aOp + var_42;
                  }
                  var_42 = pOVar25->p2;
                }
                pParse->addrExplain = var_42;
              }
              if (pParse->nErr == 0) goto LAB_00082732;
              goto LAB_0008273c;
            }
            var_44 = pParse->nTab;
            pParse->nTab = var_44 + 2;
            var_42 = var_4(var_2,100,var_44,0,0);
            var_68->addrOpenEphm[0] = var_42;
            var_24 = var_68;
            do {
              var_70 = var_24;
              var_24 = var_70->pNext;
            } while (var_24 != (type_2 *)0x0);
            puVar1 = &var_70->selFlags;
            *puVar1 = *puVar1 | 0x20;
            var_46 = var_28(var_46._1_3_,1);
            local_34 = 0;
            local_2c._4_4_ = (char *)0x0;
            local_30 = 0;
            local_2c._0_4_ = 0;
            local_38 = var_44;
            var_43 = (type_2 *)var_32(pParse,var_67,(type_3 *)&var_46);
            if (var_43 == (type_2 *)0x0) {
              var_5 = var_44 + 1;
              var_42 = var_4(var_2,100,var_5,0,0);
              var_30 = var_68->op;
              var_9 = var_68->pLimit;
              var_68->addrOpenEphm[1] = var_42;
              var_68->pPrior = (type_2 *)0x0;
              var_68->pLimit = (type_11 *)0x0;
              pcVar27 = "EXCEPT";
              if ((var_30 != 0x86) && (pcVar27 = "INTERSECT", var_30 != 0x87)) {
                pcVar27 = "UNION ALL";
                if (var_30 != 0x85) {
                  pcVar27 = "UNION";
                }
              }
              local_38 = var_5;
              var_31(pParse,'\x01',"%s USING TEMP B-TREE",pcVar27);
              var_43 = (type_2 *)var_32(pParse,var_68,(type_3 *)&var_46);
              var_69 = (type_16 *)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_27(psVar3,var_68->pLimit);
              }
              var_68->pLimit = var_9;
              if (var_43 == (type_2 *)0x0) {
                pDVar31 = (type_17 *)(pParse->nLabel + -1);
                pSVar39 = (type_20 *)(pParse->nLabel + -2);
                pParse->nLabel = (int)pSVar39;
                var_26(pParse,var_68,(int)pDVar31);
                var_4(var_2,0x25,var_44,(int)pDVar31,0);
                if (pParse->nTempReg == '\0') {
                  var_57 = (type_3 *)(pParse->nMem + 1);
                  pParse->nMem = (int)var_57;
                  pPVar41 = pParse;
                }
                else {
                  var_54 = pParse->nTempReg - 1;
                  pParse->nTempReg = var_54;
                  var_57 = (type_3 *)pParse->aTempReg[var_54];
                  pPVar41 = extraout_ECX_00;
                }
                var_42 = var_4(var_2,0x7e,var_44,(int)var_57,0);
                var_62 = 0;
                pDest_00 = var_57;
                var_56(var_2,0x1d,var_5,(int)pSVar39,(int)var_57,0);
                if (var_57 != (type_3 *)0x0) {
                  pPVar41 = (type_1 *)0x834aa;
                  var_58(pParse,(int)var_57);
                }
                var_55((type_1 *)0x0,(type_2 *)0x0,(int)&dest,pSVar39,pDVar31,pDest_00,
                                var_62,(int)pPVar41);
                var_39(var_2,(int)pSVar39);
                var_4(var_2,5,var_44,var_42,0);
                var_39(var_2,(int)pDVar31);
                var_4(var_2,0x74,var_5,0,0);
                goto LAB_00083517;
              }
              goto LAB_00082ed0;
            }
          }
LAB_00082b00:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          goto LAB_00081db1;
        }
        pSVar35 = var_68->pSrc;
        var_44 = var_68->pEList->nExpr;
        var_69 = pParse->pVdbe;
        var_43 = var_68->pPrior;
        if (var_68->pWin == (type_26 *)0x0) {
LAB_000827ee:
          var_42 = var_59((type_1 *)0x0,0,in_stack_ffffff1c,in_stack_ffffff20,
                                    (char *)in_stack_ffffff24);
          if (var_42 == 0) {
            pDVar31 = (type_17 *)(pParse->nLabel + -1);
            pParse->nLabel = (int)pDVar31;
            var_68->nSelectRow = 0x140;
            var_26(pParse,var_68,(int)pDVar31);
            var_9 = var_68->pLimit;
            var_42 = pSVar35->nSrc;
            var_68->pLimit = (type_11 *)0x0;
            var_62 = var_68->iLimit;
            var_68->iLimit = 0;
            var_12 = var_68->iOffset;
            var_68->iOffset = 0;
            var_60 = var_68->pOrderBy;
            if (var_42 < 1) {
LAB_00082895:
              var_6 = (type_12 *)0x0;
            }
            else {
              var_54 = pSVar35->a[0].fg.field_0x1;
              var_14 = 0;
              while ((var_54 & 0x20) == 0) {
                if (var_14 + 1 == var_42) goto LAB_00082895;
                var_54 = *(type_9 *)((int)&pSVar35[1].a[var_14].regReturn + 1);
                var_14 = var_14 + 1;
              }
              var_6 = (type_12 *)pSVar35->a[var_14].iCursor;
            }
            var_5 = pParse->nTab;
            var_53 = var_5 + 1;
            pParse->nTab = var_53;
            var_42 = pParse->nMem + 1;
            local_38 = var_5;
            if (var_68->op == 0x84) {
              if (var_60 != (type_12 *)0x0) {
                var_46 = var_28(var_46._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 = var_42;
                var_4(var_69,0x72,(int)var_6,var_42,var_44);
                var_14 = extraout_ECX_01;
                goto LAB_00082930;
              }
              var_46 = var_28(var_46._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 = var_42;
              var_4(var_69,0x72,(int)var_6,var_42,var_44);
              var_4(var_69,100,var_5,var_44,0);
LAB_00082986:
              if (var_53 != 0) {
                var_14 = var_4(var_69,100,var_53,0,0);
                var_68->selFlags = var_68->selFlags | 0x20;
                var_68->addrOpenEphm[0] = var_14;
              }
              var_68->pOrderBy = (type_12 *)0x0;
              var_43->pNext = (type_2 *)0x0;
              var_31(pParse,'\x01',"SETUP");
              var_14 = var_32(pParse,var_43,(type_3 *)&var_46);
              var_43->pNext = var_68;
              if (var_14 == 0) {
                var_44 = var_4(var_69,0x25,var_5,(int)pDVar31,0);
                var_4(var_69,0x80,(int)var_6,0,0);
                if (var_60 == (type_12 *)0x0) goto LAB_00083923;
                var_42 = var_4(var_69,0x59,var_5,var_60->nExpr + 1,var_42);
LAB_00083747:
                local_ac = (type_3 *)&var_46;
                var_57 = (type_3 *)0x0;
                var_14 = var_42;
                var_4(var_69,0x7a,var_5,0,0);
                pSVar39 = (type_20 *)(pParse->nLabel + -1);
                pParse->nLabel = (int)pSVar39;
                if (0 < var_12) {
                  var_14 = 0x83784;
                  var_61(var_69,var_12,(int)pSVar39);
                }
                var_55((type_1 *)0x0,(type_2 *)0x0,(int)&dest,pSVar39,pDVar31,var_57,var_42
                                ,var_14);
                if (var_62 != 0) {
                  var_4(var_69,0x3b,var_62,(int)pDVar31,0);
                }
                pVVar28 = var_69;
                var_39(var_69,(int)pSVar39);
                if ((var_68->selFlags & 8) == 0) {
                  var_68->pPrior = (type_2 *)0x0;
                  var_31(pParse,'\x01',"RECURSIVE STEP",pVVar28);
                  var_32(pParse,var_68,local_ac);
                  var_68->pPrior = var_43;
                }
                else {
                  var_63(pParse,"recursive aggregate queries not supported",pVVar28,pVVar28
                                 );
                }
                var_4(var_69,0xb,0,var_44,0);
                var_39(var_69,(int)pDVar31);
              }
            }
            else {
              if (var_60 != (type_12 *)0x0) {
                var_46 = var_28(var_46._1_3_,7);
                local_34 = 0;
                local_2c._4_4_ = (char *)0x0;
                local_30 = 0;
                local_2c._0_4_ = 0;
                pParse->nMem = var_42;
                var_4(var_69,0x72,(int)var_6,var_42,var_44);
                var_53 = 0;
                var_14 = extraout_ECX;
LAB_00082930:
                var_65 = var_18(pParse,var_68,var_14);
                var_14 = var_4(var_69,100,var_5,var_60->nExpr + 2,0);
                var_40(var_69,var_14,(char *)var_65,-9);
                local_2c._8_4_ = var_60;
                goto LAB_00082986;
              }
              var_46 = var_28(var_46._1_3_,5);
              local_34 = 0;
              local_2c._4_4_ = (char *)0x0;
              local_30 = 0;
              local_2c._0_4_ = 0;
              pParse->nMem = var_42;
              pPVar41 = pParse;
              var_4(var_69,0x72,(int)var_6,var_42,var_44);
              var_4(var_69,100,var_5,var_44,0);
              var_68->pOrderBy = (type_12 *)0x0;
              var_43->pNext = (type_2 *)0x0;
              var_31(pParse,'\x01',"SETUP",pPVar41);
              var_14 = var_32(pParse,var_43,(type_3 *)&var_46);
              var_43->pNext = var_68;
              if (var_14 == 0) {
                var_44 = var_4(var_69,0x25,var_5,(int)pDVar31,0);
                var_4(var_69,0x80,(int)var_6,0,0);
LAB_00083923:
                var_42 = var_4(var_69,0x7e,var_5,var_42,0);
                goto LAB_00083747;
              }
            }
            if (var_68->pOrderBy != (type_12 *)0x0) {
              var_64(pParse->db,var_68->pOrderBy);
            }
            var_68->pOrderBy = var_60;
            var_68->pLimit = var_9;
          }
        }
        else {
LAB_00082701:
          var_63(pParse,"cannot use window functions in recursive queries");
        }
        if (pParse->nErr == 0) {
          var_69 = (type_16 *)0x0;
          var_43 = (type_2 *)0x0;
LAB_00082732:
          if ((var_68->selFlags & 0x20) != 0) {
            var_20 = (type_7 *)var_68->pEList->nExpr;
            var_65 = var_21(psVar3,(int)var_20,1);
            if (var_65 == (type_15 *)0x0) {
              var_43 = (type_2 *)0x7;
            }
            else {
              if (0 < (int)var_20) {
                var_67 = (type_2 *)0x0;
                do {
                  var_66 = var_23(pParse,(type_2 *)&var_68->pEList,(int)var_68->pPrior,var_67);
                  var_65->aColl[(int)var_67] = var_66;
                  if (var_66 == (type_13 *)0x0) {
                    var_65->aColl[(int)var_67] = psVar3->pDfltColl;
                  }
                  var_67 = (type_2 *)&var_67->field_0x1;
                } while ((type_2 *)var_20 != var_67);
              }
              do {
                var_42 = 0;
                while (var_62 = var_68->addrOpenEphm[var_42], -1 < var_62) {
                  pOVar25 = (type_14 *)&dummy_22674;
                  if (var_2->db->mallocFailed == '\0') {
                    pOVar25 = var_2->aOp + var_62;
                  }
                  pOVar25->p2 = (int)var_20;
                  var_65->nRef = var_65->nRef + 1;
                  var_40(var_2,var_62,(char *)var_65,-9);
                  var_68->addrOpenEphm[var_42] = -1;
                  if (var_42 == 1) break;
                  var_42 = 1;
                }
                var_68 = var_68->pPrior;
              } while (var_68 != (type_2 *)0x0);
              var_35 = var_65->nRef - 1;
              var_65->nRef = var_35;
              if (var_35 == 0) {
                var_36(var_65);
              }
            }
          }
LAB_0008273c:
          pDest->iSdst = dest.iSdst;
          pDest->nSdst = dest.nSdst;
          if (var_69 != (type_16 *)0x0) {
            var_41(psVar3,(type_2 *)var_69,1);
          }
          goto LAB_00081db1;
        }
      }
      else {
        var_9 = var_68->pLimit;
        if (var_68->pWin != (type_26 *)0x0) {
          if ((var_5 & 0x2000) != 0) goto LAB_00082701;
          goto LAB_00081e83;
        }
        var_24 = var_68->pPrior;
        var_70 = var_68;
        if (var_24 == (type_2 *)0x0) {
LAB_000830eb:
          var_43 = (type_2 *)0x1;
          pcVar27 = "";
        }
        else {
          var_43 = (type_2 *)0x1;
          pSVar6 = var_24;
          do {
            var_70 = pSVar6;
            var_43 = (type_2 *)((int)var_43 + (type_8)(var_9 == (type_11 *)0x0));
            if (var_70->pWin != (type_26 *)0x0) {
              if ((var_5 & 0x2000) == 0) goto LAB_00081e83;
              pSVar35 = var_68->pSrc;
              var_44 = var_68->pEList->nExpr;
              var_69 = pParse->pVdbe;
              var_43 = var_24;
              goto LAB_000827ee;
            }
            pSVar6 = var_70->pPrior;
          } while (var_70->pPrior != (type_2 *)0x0);
          pcVar27 = "S";
          if (var_43 == (type_2 *)0x1) goto LAB_000830eb;
        }
        var_31(pParse,'\0',"SCAN %d CONSTANT ROW%s",var_43,pcVar27);
        do {
          var_55((type_1 *)0x0,(type_2 *)0x0,(int)&dest,(type_20 *)0x1,(type_17 *)0x1,
                          in_stack_ffffff18,(int)in_stack_ffffff1c,(int)in_stack_ffffff20);
          if (var_9 != (type_11 *)0x0) break;
          var_70->nSelectRow = (type_10)var_43;
          var_70 = var_70->pNext;
        } while (var_70 != (type_2 *)0x0);
      }
      var_43 = (type_2 *)0x0;
      pDest->iSdst = dest.iSdst;
      pDest->nSdst = dest.nSdst;
      goto LAB_00081db1;
    }
    var_30 = var_68->op;
    if (var_30 == 0x86) {
      pcVar27 = "EXCEPT";
    }
    else if (var_30 == 0x87) {
      pcVar27 = "INTERSECT";
    }
    else {
      pcVar27 = "UNION";
      if (var_30 == 0x85) {
        pcVar27 = "UNION ALL";
        pcVar11 = "LIMIT";
        goto LAB_00081d80;
      }
    }
    pcVar11 = "LIMIT";
  }
  else {
    var_30 = var_68->op;
    if (var_30 == 0x86) {
      pcVar27 = "EXCEPT";
    }
    else if (var_30 == 0x87) {
      pcVar27 = "INTERSECT";
    }
    else {
      if (var_30 != 0x85) {
        pcVar27 = "UNION";
        pcVar11 = "ORDER BY";
        goto LAB_00081d80;
      }
      pcVar27 = "UNION ALL";
    }
    pcVar11 = "ORDER BY";
  }
LAB_00081d80:
  var_63(pParse,"%s clause should come after %s not before",pcVar11,pcVar27);
  pDest->iSdst = dest.iSdst;
  pDest->nSdst = dest.nSdst;
  var_43 = (type_2 *)0x1;
LAB_00081db1:
  if (local_2c._12_4_ == *(type_4 *)(var_1 + 0x14)) {
    return (type_8)var_43;
  }
                    /* 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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: (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: (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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (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: (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: (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)))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (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 (binary_expression left: (number_literal) 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: (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 (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (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: (binary_expression left: (identifier) right: (number_literal))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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) (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: (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: (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))) (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: (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))) (expression_statement (call_expression function: (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 (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) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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) (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) (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) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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)) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))))))) (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) (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (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) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (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) (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (identifier)))))))) 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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (identifier)))))))) 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: (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (identifier))))))))) (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 (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: (identifier)))) alternative: (else_clause (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) (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: (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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) (number_literal) (identifier) (identifier))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (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) (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) (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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))) (expression_statement (assignment_expression left: (identifier) 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: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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 (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (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) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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) (number_literal) (identifier) (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: (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: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) (identifier) (identifier) (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (identifier) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (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) (number_literal) (identifier) (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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) (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))) (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) (number_literal) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier) (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: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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 (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: (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))))))) (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: (type_identifier) 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: (type_identifier) 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: (type_identifier) 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: (type_identifier) 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)))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_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: (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)))))))) (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: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) 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: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (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;
  char cVar3;
  byte *pbVar4;
  uint uVar5;
  byte *pbVar6;
  short sVar7;
  byte bVar8;
  undefined2 uVar9;
  short sVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  int iVar15;
  undefined4 uVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int *piVar20;
  undefined4 uVar21;
  uint uVar22;
  short sVar23;
  int *extraout_ECX;
  undefined4 extraout_ECX_00;
  char *pcVar24;
  int extraout_EDX;
  int *extraout_EDX_00;
  int unaff_EBP;
  uint uVar25;
  byte *pbVar26;
  int iVar27;
  int *piVar28;
  int in_GS_OFFSET;
  bool bVar29;
  undefined8 uVar30;
  undefined4 uVar31;
  byte *local_d0;
  int *local_c8;
  int local_c4;
  int local_c0;
  uint local_bc;
  int *local_b4;
  int local_b0;
  int local_ac;
  int *local_a4;
  int local_9c;
  int local_94;
  int local_90;
  undefined4 local_80;
  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 = 0x81ced;
  uVar30 = FUN_000a9503();
  pcVar24 = (char *)((ulonglong)uVar30 >> 0x20);
  piVar20 = (int *)uVar30;
  iVar18 = *(int *)(pcVar24 + 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 *)(iVar18 + 0x30) == 0) {
    if (*(int *)(iVar18 + 0x3c) == 0) {
      local_c8 = (int *)piVar20[2];
      if (local_c8 == (int *)0x0) {
        local_c8 = (int *)FUN_000318c0();
      }
      if ((char)local_74 == '\f') {
        FUN_000315c0(**(undefined4 **)(param_2 + 0x1c),0);
        local_74 = CONCAT31(local_74._1_3_,0xe);
      }
      uVar12 = *(uint *)(param_2 + 4);
      if ((uVar12 & 0x400) == 0) {
        if ((uVar12 & 0x2000) == 0) {
LAB_00081e83:
          local_b4 = *(int **)(param_2 + 0x30);
          if (local_b4 != (int *)0x0) {
            iVar15 = *piVar20;
            piVar28 = (int *)piVar20[2];
            iVar18 = piVar20[0xe] + -1;
            iVar11 = piVar20[0xe] + -2;
            piVar20[0xe] = iVar11;
            iVar27 = *(int *)(param_2 + 0x34);
            uVar12 = (uint)*param_2;
            local_b0 = *local_b4;
            if (((uVar12 != 0x85) && (*(char *)(iVar15 + 0x4d) == '\0')) &&
               (0 < **(int **)(param_2 + 0x1c))) {
              uVar25 = 1;
              do {
                if (local_b0 < 1) {
                  if (local_b0 == 0) {
LAB_00081f4a:
                    local_3c = 0;
                    local_38 = 0;
                    iVar13 = FUN_0002ef20(0);
                    if (iVar13 == 0) {
                      local_d0 = (byte *)0x7;
                      goto LAB_00081db1;
                    }
                    *(uint *)(iVar13 + 4) = *(uint *)(iVar13 + 4) | 0x400;
                    *(uint *)(iVar13 + 8) = uVar25;
                    local_b4 = (int *)FUN_000449c0();
                    *(int **)(param_2 + 0x30) = local_b4;
                    if (local_b4 != (int *)0x0) {
                      *(short *)(local_b4 + local_b0 * 4 + 4) = (short)uVar25;
                      local_b0 = local_b0 + 1;
                    }
                  }
                }
                else if (uVar25 != *(ushort *)(local_b4 + 4)) {
                  iVar13 = 0;
                  piVar14 = local_b4 + 1;
                  do {
                    iVar13 = iVar13 + 1;
                    if (iVar13 == local_b0) goto LAB_00081f4a;
                    puVar1 = (ushort *)(piVar14 + 7);
                    piVar14 = piVar14 + 4;
                  } while (*puVar1 != uVar25);
                }
                uVar25 = uVar25 + 1;
              } while ((*(char *)(iVar15 + 0x4d) == '\0') &&
                      ((int)uVar25 <= **(int **)(param_2 + 0x1c)));
            }
            piVar14 = (int *)FUN_0002e2d0();
            if (piVar14 != (int *)0x0) {
              *piVar14 = local_b0;
              if (0 < local_b0) {
                iVar15 = 0;
                do {
                  *(uint *)((int)piVar14 + iVar15 + 4) = *(ushort *)(local_b4 + iVar15 + 4) - 1;
                  iVar15 = iVar15 + 4;
                } while (local_b0 * 4 != iVar15);
              }
              FUN_0004c930();
            }
            *(int **)(param_2 + 0x30) = local_b4;
            uVar16 = FUN_00053100();
            *(undefined4 *)(iVar27 + 0x30) = uVar16;
            if (uVar12 == 0x85) {
              local_a4 = (int *)0x0;
              local_90 = 0;
            }
            else {
              iVar15 = **(int **)(param_2 + 0x1c);
              local_90 = piVar20[0xb] + 1;
              piVar20[0xb] = iVar15 + 1 + piVar20[0xb];
              FUN_000315c0(local_90,0);
              local_a4 = (int *)FUN_00031ab0();
              if ((local_a4 != (int *)0x0) && (0 < iVar15)) {
                iVar13 = 0;
                do {
                  iVar17 = FUN_0004c840(iVar13);
                  local_a4[iVar13 + 5] = iVar17;
                  *(undefined1 *)(local_a4[4] + iVar13) = 0;
                  iVar13 = iVar13 + 1;
                } while (iVar15 != iVar13);
              }
            }
            param_2[0x34] = 0;
            param_2[0x35] = 0;
            param_2[0x36] = 0;
            param_2[0x37] = 0;
            *(undefined4 *)(iVar27 + 0x38) = 0;
            FUN_00053b50(unaff_EBP + 0x289fb);
            if (*(int *)(iVar27 + 0x34) == 0) {
              FUN_00053b50(unaff_EBP + 0x289fb);
            }
            FUN_000781b0();
            if ((uVar12 == 0x85) && (*(int *)(param_2 + 8) != 0)) {
              local_9c = piVar20[0xb] + 1;
              local_94 = piVar20[0xb] + 2;
              piVar20[0xb] = local_94;
              FUN_000315c0(local_9c,0);
              FUN_000315c0(local_94,0);
            }
            else {
              local_94 = 0;
              local_9c = 0;
            }
            if (*(int *)(param_2 + 0x3c) != 0) {
              FUN_000432e0();
            }
            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;
            bVar8 = *param_2;
            iVar13 = unaff_EBP + 0x289ee;
            if ((bVar8 != 0x86) && (iVar13 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {
              iVar13 = unaff_EBP + 0x289da;
              if (bVar8 != 0x85) {
                iVar13 = unaff_EBP + 0x289f5;
              }
            }
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fc9,iVar13);
            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);
            *(int *)(iVar27 + 8) = local_9c;
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd4);
            FUN_00070950();
            FUN_000315c0(0,0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            if (iVar17 < 0) {
              iVar17 = piVar28[0x1a] + -1;
            }
            iVar13 = unaff_EBP + 0x5d8e3;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar13 = piVar28[0x19] + iVar17 * 0x14;
            }
            *(int *)(iVar13 + 8) = piVar28[0x1a];
            iVar17 = FUN_000315c0(0,piVar28[0x1a] + 1);
            uVar16 = *(undefined4 *)(param_2 + 8);
            uVar21 = *(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_94;
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fd9);
            FUN_00070950();
            *(undefined4 *)(param_2 + 0xc) = uVar21;
            *(undefined4 *)(param_2 + 8) = uVar16;
            FUN_000315c0(0,0);
            iVar13 = piVar28[3];
            *(undefined1 *)(iVar13 + 0x13) = 0;
            *(undefined4 *)(iVar13 + 0x1c) = 0;
            uVar16 = FUN_00032740(&local_4c,&local_48,param_3,iVar15 + 3,local_90,local_a4,iVar18);
            local_80 = 0;
            if (uVar12 - 0x84 < 2) {
              local_80 = FUN_00032740(&local_30,&local_2c,param_3,iVar15 + 4,local_90,local_a4,
                                      iVar18);
            }
            if ((local_a4 != (int *)0x0) &&
               (iVar15 = *local_a4, *local_a4 = iVar15 + -1, iVar15 + -1 == 0)) {
              FUN_0002a720();
            }
            iVar15 = iVar18;
            local_90 = iVar18;
            if (1 < uVar12 - 0x86) {
              iVar15 = FUN_000315c0(local_80,0);
              local_90 = FUN_000315c0(iVar18,0);
              FUN_000315c0(iVar15,0);
              uVar9 = FUN_00026b50();
              *(undefined2 *)(param_2 + 2) = uVar9;
            }
            if (uVar12 == 0x87) {
              if (*(short *)(iVar27 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar27 + 2);
              }
              local_a4 = (int *)FUN_000315c0(uVar16,0);
              FUN_000315c0(iVar15,0);
              FUN_000315c0(iVar11,0);
              local_ac = iVar15;
            }
            else {
              local_ac = FUN_000315c0(uVar16,0);
              FUN_000315c0(iVar18,0);
              FUN_000315c0(local_ac,0);
              local_a4 = (int *)FUN_000315c0(uVar16,0);
              FUN_000315c0(iVar15,0);
              FUN_000315c0(iVar11,0);
              if (uVar12 != 0x85) {
                local_a4 = (int *)FUN_000315c0(iVar15,0);
                FUN_000315c0(iVar11,0);
              }
            }
            iVar18 = piVar28[0x1a];
            if (uVar12 - 0x84 < 2) {
              FUN_000315c0(local_80,0);
            }
            FUN_000315c0(local_ac,0);
            FUN_000315c0(iVar11,0);
            iVar15 = piVar28[0x1a] + -1;
            if (-1 < iVar17) {
              iVar15 = iVar17;
            }
            iVar11 = unaff_EBP + 0x5d8e3;
            if (*(char *)(*piVar28 + 0x4d) == '\0') {
              iVar11 = piVar28[0x19] + iVar15 * 0x14;
            }
            *(int *)(iVar11 + 8) = piVar28[0x1a];
            FUN_000315c0(local_90,0);
            FUN_000315c0(local_ac,0);
            FUN_00031430();
            FUN_000315c0(0,0);
            FUN_00032090(0xfffffff1);
            FUN_000315c0(local_30,local_b0);
            FUN_00032090(0xfffffff7);
            if (0 < piVar28[0x1a]) {
              *(undefined2 *)(piVar28[0x19] + piVar28[0x1a] * 0x14 + -0x12) = 1;
            }
            FUN_000315c0(local_a4,iVar18);
            FUN_00031430();
            if (*(int *)(param_2 + 0x34) != 0) {
              FUN_00043210();
            }
            *(int *)(param_2 + 0x34) = iVar27;
            *(byte **)(iVar27 + 0x38) = param_2;
            iVar18 = piVar20[0x36];
            if (iVar18 != 0) {
              piVar28 = (int *)piVar20[2];
              if (iVar18 < 0) {
                iVar18 = piVar28[0x1a] + -1;
              }
              iVar15 = unaff_EBP + 0x5d8e3;
              if (*(char *)(*piVar28 + 0x4d) == '\0') {
                iVar15 = piVar28[0x19] + iVar18 * 0x14;
              }
              iVar18 = *(int *)(iVar15 + 8);
            }
            piVar20[0x36] = iVar18;
            local_d0 = (byte *)(uint)(piVar20[9] != 0);
            goto LAB_00081db1;
          }
          if (*(int *)(iVar18 + 0x34) == 0) {
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fdf);
            FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fee);
          }
          bVar8 = *param_2;
          if (bVar8 == 0x85) {
            *(undefined4 *)(iVar18 + 8) = *(undefined4 *)(param_2 + 8);
            *(undefined4 *)(iVar18 + 0xc) = *(undefined4 *)(param_2 + 0xc);
            *(undefined4 *)(iVar18 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);
            local_d0 = (byte *)FUN_00070950();
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            if (local_d0 == (byte *)0x0) {
              local_c0 = *(int *)(iVar18 + 8);
              uVar16 = *(undefined4 *)(iVar18 + 0xc);
              param_2[0x34] = 0;
              param_2[0x35] = 0;
              param_2[0x36] = 0;
              param_2[0x37] = 0;
              *(int *)(param_2 + 8) = local_c0;
              *(undefined4 *)(param_2 + 0xc) = uVar16;
              if (local_c0 != 0) {
                uVar30 = FUN_000315c0(0,0);
                uVar16 = (undefined4)((ulonglong)uVar30 >> 0x20);
                local_c0 = (int)uVar30;
                iVar27 = *(int *)(param_2 + 0xc);
                if (iVar27 != 0) {
                  FUN_000315c0(iVar27 + 1,iVar27,uVar16,uVar16);
                }
              }
              FUN_0003eec0(piVar20,1,unaff_EBP + 0x289da);
              local_d0 = (byte *)FUN_00070950();
              local_c4 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar18;
              uVar9 = FUN_00026b50();
              *(undefined2 *)(param_2 + 2) = uVar9;
              if (((*(int *)(iVar18 + 0x3c) != 0) && (iVar18 = FUN_00029640(), iVar18 != 0)) &&
                 (0 < (int)local_3c)) {
                sVar10 = *(short *)(param_2 + 2);
                uVar12 = (int)local_3c >> 0x1f;
                if ((int)local_3c < 8) {
                  if (local_3c == 1) {
                    if (0 < sVar10) {
                      sVar10 = 0;
                      goto LAB_00083ad6;
                    }
                  }
                  else {
                    uVar22 = local_3c;
                    uVar25 = uVar12;
                    sVar7 = 0x28;
                    do {
                      sVar23 = sVar7;
                      uVar5 = uVar22 * 2;
                      if ((uVar25 & 0x7fffffff) != 0 || (int)uVar22 < 0) break;
                      uVar25 = 0;
                      uVar22 = uVar5;
                      sVar7 = sVar23 + -10;
                    } while (uVar5 < 8);
                    if ((short)(sVar23 + -0x14 +
                               *(short *)(&UNK_0002f45f + (uVar5 & 7) * 2 + unaff_EBP)) < sVar10) {
                      sVar10 = 0x28;
                      local_bc = local_3c;
                      do {
                        sVar10 = sVar10 + -10;
                        bVar29 = CARRY4(local_bc,local_bc);
                        local_bc = local_bc * 2;
                        if (uVar12 * 2 + (uint)bVar29 != 0) break;
                        uVar12 = 0;
                      } while (local_bc < 8);
                      goto LAB_00083ac3;
                    }
                  }
                }
                else {
                  if ((int)local_3c < 0) {
                    uVar25 = 0x1f;
                    if ((int)local_3c < 0) {
                      for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {
                      }
                    }
                    uVar25 = uVar25 ^ 0x1f;
                  }
                  else {
                    uVar25 = 0x1f;
                    if (local_3c != 0) {
                      for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {
                      }
                    }
                    uVar25 = (uVar25 ^ 0x1f) + 0x20;
                  }
                  uVar25 = 0x3c - uVar25;
                  bVar8 = (byte)uVar25 & 0x1f;
                  uVar22 = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;
                  if ((uVar25 & 0x20) != 0) {
                    uVar22 = uVar12 >> ((byte)uVar25 & 0x1f);
                  }
                  if ((short)((short)uVar25 * 10 + 0x1e +
                             *(short *)(&UNK_0002f45f + (uVar22 & 7) * 2 + unaff_EBP)) < sVar10) {
                    if ((int)local_3c < 0) {
                      uVar25 = 0x1f;
                      if ((int)local_3c < 0) {
                        for (; uVar12 >> uVar25 == 0; uVar25 = uVar25 - 1) {
                        }
                      }
                      uVar25 = uVar25 ^ 0x1f;
                    }
                    else {
                      uVar25 = 0x1f;
                      if (local_3c != 0) {
                        for (; local_3c >> uVar25 == 0; uVar25 = uVar25 - 1) {
                        }
                      }
                      uVar25 = (uVar25 ^ 0x1f) + 0x20;
                    }
                    uVar25 = 0x3c - uVar25;
                    sVar10 = (short)uVar25 * 10 + 0x28;
                    bVar8 = (byte)uVar25 & 0x1f;
                    local_bc = local_3c >> bVar8 | uVar12 << 0x20 - bVar8;
                    if ((uVar25 & 0x20) != 0) {
                      local_bc = uVar12 >> ((byte)uVar25 & 0x1f);
                    }
LAB_00083ac3:
                    sVar10 = sVar10 + -10 +
                             *(short *)(&UNK_0002f45f + (local_bc & 7) * 2 + unaff_EBP);
LAB_00083ad6:
                    *(short *)(param_2 + 2) = sVar10;
                  }
                }
              }
              if (local_c0 != 0) {
                iVar18 = local_c8[0x1a] + -1;
                if (-1 < local_c0) {
                  iVar18 = local_c0;
                }
                iVar27 = unaff_EBP + 0x5d8e3;
                if (*(char *)(*local_c8 + 0x4d) == '\0') {
                  iVar27 = iVar18 * 0x14 + local_c8[0x19];
                }
                *(int *)(iVar27 + 8) = local_c8[0x1a];
              }
              goto LAB_00082ed0;
            }
          }
          else {
            if ((bVar8 == 0x86) || (bVar8 == 0x84)) {
              if ((char)local_74 == '\x01') {
                local_c0 = local_70;
              }
              else {
                local_c0 = piVar20[10];
                piVar20[10] = local_c0 + 1;
                uVar16 = FUN_000315c0(0,0);
                *(undefined4 *)(param_2 + 0x14) = uVar16;
                pbVar4 = param_2;
                do {
                  pbVar26 = pbVar4;
                  pbVar4 = *(byte **)(pbVar26 + 0x38);
                } while (pbVar4 != (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 = local_c0;
              local_d0 = (byte *)FUN_00070950();
              if (local_d0 != (byte *)0x0) goto LAB_00082b00;
              bVar8 = *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 (bVar8 == 0x86) {
                local_3c = CONCAT31(local_3c._1_3_,2);
                iVar27 = unaff_EBP + 0x289ee;
              }
              else {
                local_3c = CONCAT31(local_3c._1_3_,1);
                iVar27 = unaff_EBP + 0x289da;
                if (bVar8 != 0x85) {
                  iVar27 = unaff_EBP + 0x289e4;
                  if (bVar8 != 0x87) {
                    iVar27 = unaff_EBP + 0x289f5;
                  }
                }
              }
              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar27);
              local_d0 = (byte *)FUN_00070950();
              local_c4 = *(int *)(param_2 + 0x34);
              param_2[0x30] = 0;
              param_2[0x31] = 0;
              param_2[0x32] = 0;
              param_2[0x33] = 0;
              *(int *)(param_2 + 0x34) = iVar18;
              if (*param_2 == 0x84) {
                uVar9 = FUN_00026b50();
                *(undefined2 *)(param_2 + 2) = uVar9;
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_000432e0();
              }
              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')) {
                iVar18 = piVar20[0xe] + -1;
                iVar11 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar11;
                uVar16 = FUN_000781b0();
                FUN_000315c0(iVar18,0,uVar16,uVar16);
                iVar27 = local_c8[0x1a];
                FUN_00079470(0,0,&local_74,iVar11,iVar18);
                uVar21 = FUN_00031430();
                uVar31 = uVar21;
                FUN_000315c0(iVar27,0,uVar21,uVar21);
                FUN_00031430();
LAB_00083517:
                FUN_000315c0(0,0,uVar21,uVar31);
              }
LAB_00082ed0:
              if (*(int *)(param_2 + 0x38) == 0) {
                iVar18 = piVar20[0x36];
                if (iVar18 != 0) {
                  piVar28 = (int *)piVar20[2];
                  if (iVar18 < 0) {
                    iVar18 = piVar28[0x1a] + -1;
                  }
                  iVar27 = unaff_EBP + 0x5d8e3;
                  if (*(char *)(*piVar28 + 0x4d) == '\0') {
                    iVar27 = iVar18 * 0x14 + piVar28[0x19];
                  }
                  iVar18 = *(int *)(iVar27 + 8);
                }
                piVar20[0x36] = iVar18;
              }
              if (piVar20[9] == 0) goto LAB_00082732;
              goto LAB_0008273c;
            }
            iVar27 = piVar20[10];
            piVar20[10] = iVar27 + 2;
            uVar16 = FUN_000315c0(0,0);
            *(undefined4 *)(param_2 + 0x14) = uVar16;
            pbVar4 = param_2;
            do {
              pbVar26 = pbVar4;
              pbVar4 = *(byte **)(pbVar26 + 0x38);
            } while (pbVar4 != (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 = iVar27;
            local_d0 = (byte *)FUN_00070950();
            if (local_d0 == (byte *)0x0) {
              uVar21 = FUN_000315c0(0,0);
              bVar8 = *param_2;
              uVar16 = *(undefined4 *)(param_2 + 0x3c);
              *(undefined4 *)(param_2 + 0x18) = uVar21;
              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;
              iVar11 = unaff_EBP + 0x289ee;
              if ((bVar8 != 0x86) && (iVar11 = unaff_EBP + 0x289e4, bVar8 != 0x87)) {
                iVar11 = unaff_EBP + 0x289da;
                if (bVar8 != 0x85) {
                  iVar11 = unaff_EBP + 0x289f5;
                }
              }
              local_38 = iVar27 + 1;
              FUN_0003eec0(piVar20,1,unaff_EBP + 0x29001,iVar11);
              local_d0 = (byte *)FUN_00070950();
              local_c4 = *(int *)(param_2 + 0x34);
              *(int *)(param_2 + 0x34) = iVar18;
              if (*(short *)(iVar18 + 2) < *(short *)(param_2 + 2)) {
                *(short *)(param_2 + 2) = *(short *)(iVar18 + 2);
              }
              if (*(int *)(param_2 + 0x3c) != 0) {
                FUN_000432e0();
              }
              *(undefined4 *)(param_2 + 0x3c) = uVar16;
              if (local_d0 == (byte *)0x0) {
                iVar18 = piVar20[0xe] + -1;
                iVar27 = piVar20[0xe] + -2;
                piVar20[0xe] = iVar27;
                uVar16 = FUN_000781b0();
                FUN_000315c0(iVar18,0,uVar16,uVar16);
                if (*(char *)((int)piVar20 + 0x13) == '\0') {
                  iVar11 = piVar20[0xb] + 1;
                  piVar20[0xb] = iVar11;
                  piVar28 = piVar20;
                }
                else {
                  bVar8 = *(char *)((int)piVar20 + 0x13) - 1;
                  *(byte *)((int)piVar20 + 0x13) = bVar8;
                  iVar11 = piVar20[bVar8 + 0x26];
                  piVar28 = extraout_ECX;
                }
                uVar16 = FUN_000315c0(iVar11,0,piVar28,piVar28);
                FUN_000316b0(iVar27,iVar11,0);
                if (iVar11 != 0) {
                  FUN_00029c40();
                }
                FUN_00079470(0,0,&local_74,iVar27,iVar18);
                FUN_00031430();
                uVar21 = extraout_ECX_00;
                uVar31 = extraout_ECX_00;
                FUN_000315c0(uVar16,0,extraout_ECX_00,extraout_ECX_00);
                FUN_00031430();
                FUN_000315c0(0,0);
                goto LAB_00083517;
              }
              goto LAB_00082ed0;
            }
          }
LAB_00082b00:
          param_3[3] = local_68;
          param_3[4] = local_64;
          goto LAB_00081db1;
        }
        piVar28 = *(int **)(param_2 + 0x20);
        local_c0 = **(undefined4 **)(param_2 + 0x1c);
        local_d0 = *(byte **)(param_2 + 0x34);
        if (*(int *)(param_2 + 0x44) == 0) {
LAB_000827ee:
          iVar18 = FUN_0003c520(0,0);
          if (iVar18 == 0) {
            iVar17 = piVar20[0xe] + -1;
            piVar20[0xe] = iVar17;
            param_2[2] = 0x40;
            param_2[3] = 1;
            FUN_000781b0();
            uVar16 = *(undefined4 *)(param_2 + 0x3c);
            iVar18 = *piVar28;
            param_2[0x3c] = 0;
            param_2[0x3d] = 0;
            param_2[0x3e] = 0;
            param_2[0x3f] = 0;
            iVar27 = *(int *)(param_2 + 8);
            param_2[8] = 0;
            param_2[9] = 0;
            param_2[10] = 0;
            param_2[0xb] = 0;
            iVar11 = *(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);
            iVar13 = extraout_EDX;
            if (0 < iVar18) {
              iVar19 = 0;
              bVar8 = *(byte *)((int)piVar28 + 0x2d);
              while (((bVar8 & 0x20) == 0 && (iVar19 = iVar19 + 1, iVar19 != iVar18))) {
                iVar13 = iVar19 * 0x44;
                bVar8 = *(byte *)((int)piVar28 + iVar13 + 0x2d);
              }
            }
            local_38 = piVar20[10];
            local_bc = local_38 + 1;
            piVar20[10] = local_bc;
            iVar18 = 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] = iVar18;
                FUN_000315c0(iVar18,local_c0,iVar13,iVar13);
                goto LAB_00082930;
              }
              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] = iVar18;
              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);
              FUN_000315c0(local_c0,0);
              piVar28 = extraout_EDX_00;
LAB_00082986:
              if (local_bc != 0) {
                uVar21 = FUN_000315c0(0,0,piVar28,piVar28);
                *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20;
                *(undefined4 *)(param_2 + 0x14) = uVar21;
              }
              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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);
              uVar30 = FUN_00070950();
              uVar21 = (undefined4)((ulonglong)uVar30 >> 0x20);
              *(byte **)(local_d0 + 0x38) = param_2;
              if ((int)uVar30 == 0) {
                local_c0 = FUN_000315c0(iVar17,0,uVar21,uVar21);
                uVar21 = FUN_000315c0(0,0);
                if (piVar14 == (int *)0x0) goto LAB_00083923;
                uVar21 = FUN_000315c0(*piVar14 + 1,iVar18,uVar21,uVar21);
LAB_00083747:
                FUN_000315c0(0,0,uVar21,uVar21);
                piVar28 = (int *)(piVar20[0xe] + -1);
                piVar20[0xe] = (int)piVar28;
                if (0 < iVar11) {
                  FUN_00031970();
                }
                uVar21 = FUN_00079470(0,0,&local_74,piVar28,iVar17);
                if (iVar27 != 0) {
                  FUN_000315c0(iVar17,0,uVar21,uVar21);
                }
                uVar21 = FUN_00031430();
                if ((param_2[4] & 8) == 0) {
                  param_2[0x34] = 0;
                  param_2[0x35] = 0;
                  param_2[0x36] = 0;
                  param_2[0x37] = 0;
                  FUN_0003eec0(piVar20,1,unaff_EBP + 0x28fba,uVar21);
                  FUN_00070950();
                  *(byte **)(param_2 + 0x34) = local_d0;
                  piVar28 = piVar20;
                }
                else {
                  FUN_0003c160(piVar20,unaff_EBP + 0x2b91b,uVar21,uVar21);
                }
                FUN_000315c0(local_c0,0,piVar28,piVar28);
                FUN_00031430();
              }
            }
            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] = iVar18;
                FUN_000315c0(iVar18,local_c0);
                local_bc = 0;
LAB_00082930:
                FUN_0004c930();
                FUN_000315c0(*piVar14 + 2,0);
                FUN_00032090(0xfffffff7);
                piVar28 = piVar14;
                local_24 = piVar14;
                goto LAB_00082986;
              }
              local_3c = CONCAT31(local_3c._1_3_,5);
              local_34 = 0;
              local_28 = 0;
              local_30 = 0;
              local_2c = 0;
              piVar20[0xb] = iVar18;
              FUN_000315c0(iVar18,local_c0,piVar20,piVar20);
              FUN_000315c0(local_c0,0);
              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_0003eec0(piVar20,1,unaff_EBP + 0x28fb4);
              iVar13 = FUN_00070950();
              *(byte **)(local_d0 + 0x38) = param_2;
              if (iVar13 == 0) {
                local_c0 = FUN_000315c0(iVar17,0,0,0);
                uVar21 = FUN_000315c0(0,0);
LAB_00083923:
                uVar21 = FUN_000315c0(iVar18,0,uVar21,uVar21);
                goto LAB_00083747;
              }
            }
            if (*(int *)(param_2 + 0x30) != 0) {
              FUN_000433a0();
            }
            *(int **)(param_2 + 0x30) = piVar14;
            *(undefined4 *)(param_2 + 0x3c) = uVar16;
          }
        }
        else {
LAB_00082701:
          FUN_0003c160(piVar20,unaff_EBP + 0x2b8e7);
        }
        if (piVar20[9] == 0) {
          local_c4 = 0;
          local_d0 = (byte *)0x0;
LAB_00082732:
          if ((param_2[4] & 0x20) != 0) {
            iVar18 = **(int **)(param_2 + 0x1c);
            piVar20 = (int *)FUN_00031ab0();
            if (piVar20 == (int *)0x0) {
              local_d0 = (byte *)0x7;
            }
            else {
              if (0 < iVar18) {
                iVar27 = 0;
                do {
                  iVar11 = FUN_0004c840(iVar27);
                  piVar20[iVar27 + 5] = iVar11;
                  if (iVar11 == 0) {
                    piVar20[iVar27 + 5] = *(int *)(iVar15 + 8);
                  }
                  iVar27 = iVar27 + 1;
                } while (iVar18 != iVar27);
              }
              do {
                iVar15 = 0;
                while (-1 < *(int *)(param_2 + iVar15 * 4 + 0x14)) {
                  iVar27 = unaff_EBP + 0x5d8e3;
                  if (*(char *)(*local_c8 + 0x4d) == '\0') {
                    iVar27 = local_c8[0x19] + *(int *)(param_2 + iVar15 * 4 + 0x14) * 0x14;
                  }
                  *(int *)(iVar27 + 8) = iVar18;
                  *piVar20 = *piVar20 + 1;
                  FUN_00032090(0xfffffff7);
                  pbVar4 = param_2 + iVar15 * 4 + 0x14;
                  pbVar4[0] = 0xff;
                  pbVar4[1] = 0xff;
                  pbVar4[2] = 0xff;
                  pbVar4[3] = 0xff;
                  if (iVar15 == 1) break;
                  iVar15 = 1;
                }
                param_2 = *(byte **)(param_2 + 0x34);
              } while (param_2 != (byte *)0x0);
              iVar18 = *piVar20;
              *piVar20 = iVar18 + -1;
              if (iVar18 + -1 == 0) {
                FUN_0002a720();
              }
            }
          }
LAB_0008273c:
          param_3[3] = local_68;
          param_3[4] = local_64;
          if (local_c4 != 0) {
            FUN_00043210();
          }
          goto LAB_00081db1;
        }
      }
      else {
        iVar27 = *(int *)(param_2 + 0x3c);
        if (*(int *)(param_2 + 0x44) != 0) {
          if ((uVar12 & 0x2000) != 0) goto LAB_00082701;
          goto LAB_00081e83;
        }
        pbVar4 = *(byte **)(param_2 + 0x34);
        pbVar26 = param_2;
        if (pbVar4 == (byte *)0x0) {
LAB_000830eb:
          local_d0 = (byte *)0x1;
          iVar18 = unaff_EBP + 0x29350;
        }
        else {
          local_d0 = (byte *)0x1;
          pbVar6 = pbVar4;
          do {
            pbVar26 = pbVar6;
            local_d0 = (byte *)((int)local_d0 + (uint)(iVar27 == 0));
            if (*(int *)(pbVar26 + 0x44) != 0) {
              if ((uVar12 & 0x2000) == 0) goto LAB_00081e83;
              piVar28 = *(int **)(param_2 + 0x20);
              local_c0 = **(undefined4 **)(param_2 + 0x1c);
              local_d0 = pbVar4;
              goto LAB_000827ee;
            }
            pbVar6 = *(byte **)(pbVar26 + 0x34);
          } while (*(byte **)(pbVar26 + 0x34) != (byte *)0x0);
          iVar18 = unaff_EBP + 0x29531;
          if (local_d0 == (byte *)0x1) goto LAB_000830eb;
        }
        FUN_0003eec0(piVar20,0,unaff_EBP + 0x28f9d,local_d0,iVar18);
        do {
          FUN_00079470(0,0,&local_74,1,1);
          if (iVar27 != 0) break;
          *(short *)(pbVar26 + 2) = (short)local_d0;
          pbVar26 = *(byte **)(pbVar26 + 0x38);
        } while (pbVar26 != (byte *)0x0);
      }
      local_d0 = (byte *)0x0;
      param_3[3] = local_68;
      param_3[4] = local_64;
      goto LAB_00081db1;
    }
    cVar3 = *pcVar24;
    if (cVar3 == -0x7a) {
      iVar18 = unaff_EBP + 0x289ee;
    }
    else if (cVar3 == -0x79) {
      iVar18 = unaff_EBP + 0x289e4;
    }
    else {
      iVar18 = unaff_EBP + 0x289f5;
      if (cVar3 == -0x7b) {
        iVar18 = unaff_EBP + 0x289da;
        iVar15 = unaff_EBP + 0x28f97;
        goto LAB_00081d80;
      }
    }
    iVar15 = unaff_EBP + 0x28f97;
  }
  else {
    cVar3 = *pcVar24;
    if (cVar3 == -0x7a) {
      iVar18 = unaff_EBP + 0x289ee;
    }
    else if (cVar3 == -0x79) {
      iVar18 = unaff_EBP + 0x289e4;
    }
    else {
      if (cVar3 != -0x7b) {
        iVar18 = unaff_EBP + 0x289f5;
        iVar15 = unaff_EBP + 0x28e22;
        goto LAB_00081d80;
      }
      iVar18 = unaff_EBP + 0x289da;
    }
    iVar15 = unaff_EBP + 0x28e22;
  }
LAB_00081d80:
  FUN_0003c160(piVar20,unaff_EBP + 0x2b8bb,iVar15,iVar18);
  param_3[3] = local_68;
  param_3[4] = local_64;
  local_d0 = (byte *)0x1;
LAB_00081db1:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return (uint)local_d0;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a9ea0();
}

