
void sqlite3GenerateConstraintChecks
               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,
               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,
               int *aiChng,Upsert *pUpsert)

{
  Vdbe *p;
  byte bVar1;
  short sVar2;
  int iVar3;
  sqlite3 *db;
  int iVar4;
  ExprList *pEVar5;
  sqlite3 *psVar6;
  code *pcVar7;
  bool bVar8;
  byte bVar9;
  u8 uVar10;
  Parse *pParse_00;
  Vdbe *p_00;
  Column *pCVar11;
  uint uVar12;
  Trigger *pTVar13;
  Expr *pEVar14;
  char *p1;
  HashElem *pHVar15;
  char *pcVar16;
  Parse *pPVar17;
  CollSeq *zP4;
  char cVar18;
  int extraout_ECX;
  int *piVar19;
  Op *pOVar20;
  Table *pTab_00;
  bool bVar21;
  int iVar22;
  uint uVar23;
  Index *pIdx;
  int unaff_EDI;
  int iVar24;
  ExprList_item *pEVar25;
  int in_GS_OFFSET;
  bool bVar26;
  undefined8 uVar27;
  undefined3 in_stack_00000021;
  undefined3 in_stack_00000025;
  Parse *in_stack_ffffff38;
  Parse *pPVar28;
  Parse *in_stack_ffffff40;
  Parse *pPVar29;
  u8 **in_stack_ffffff44;
  u8 in_stack_ffffff48;
  int in_stack_ffffff4c;
  Parse *local_b0;
  int local_ac;
  int local_a8;
  int local_9c;
  int local_94;
  Index *local_88;
  char *local_84;
  Index *local_80;
  byte local_7b;
  uint local_78;
  Upsert *local_6c;
  int local_60;
  undefined4 local_5c;
  int local_58;
  int local_54;
  int local_48;
  Walker w;
  
  uVar27 = __x86_get_pc_thunk_di();
  pTab_00 = (Table *)((ulonglong)uVar27 >> 0x20);
  pParse_00 = (Parse *)uVar27;
  p_00 = pParse_00->pVdbe;
  local_6c = (Upsert *)ignoreDest;
  cVar18 = (char)iIdxCur;
  local_7b = (byte)regNewData;
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  db = pParse_00->db;
  bVar26 = iDataCur != 0;
  if (p_00 == (Vdbe *)0x0) {
    in_stack_ffffff40 = (Parse *)0xeff48;
    p_00 = sqlite3GetVdbe(pParse_00);
  }
  iVar24 = (int)pTab_00->nCol;
  if ((pTab_00->tabFlags & 0x20) == 0) {
    bVar1 = 1;
    local_78 = 1;
    local_80 = (Index *)0x0;
  }
  else {
    local_80 = pTab_00->pIndex;
    if (local_80 == (Index *)0x0) {
sqlite3GenerateConstraintChecks_cold_1033:
                    /* WARNING: Does not return */
      pcVar7 = (code *)invalidInstructionException();
      (*pcVar7)();
    }
    bVar1 = local_80->field_0x37;
    while ((bVar1 & 3) != 2) {
      local_80 = local_80->pNext;
      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;
      bVar1 = local_80->field_0x37;
    }
    bVar1 = 0;
    local_78 = (uint)local_80->nKeyCol;
  }
  iVar22 = 0;
  if (0 < iVar24) {
    do {
      while ((pTab_00->iPKey == iVar22 ||
             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))
             ))) {
LAB_000f0048:
        iVar22 = iVar22 + 1;
        if (iVar24 == iVar22) goto LAB_000f0158;
      }
      pCVar11 = pTab_00->aCol + iVar22;
      uVar23 = (uint)pCVar11->notNull;
      if (uVar23 == 0) goto LAB_000f0048;
      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);
      uVar12 = regNewData & 0xff;
      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {
LAB_000f009f:
        local_a8 = 0;
LAB_000f00a7:
        uVar12 = 2;
        pPVar29 = pParse_00->pToplevel;
        if (pParse_00->pToplevel == (Parse *)0x0) {
          pPVar29 = pParse_00;
        }
        pPVar29->mayAbort = '\x01';
        pCVar11 = pTab_00->aCol + iVar22;
      }
      else {
        if (uVar12 == 5) {
          local_a8 = 0;
          if (pCVar11->pDflt != (Expr *)0x0) {
LAB_000f04a3:
            local_a8 = pParse_00->nLabel + -1;
            pParse_00->nLabel = local_a8;
            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);
            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);
            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);
          }
          goto LAB_000f00a7;
        }
        if (uVar12 == 2) goto LAB_000f009f;
        if (uVar12 < 3) {
          if (uVar12 != 1) goto LAB_000f0025;
        }
        else if (uVar12 != 3) {
          if (uVar12 == 5) goto LAB_000f04a3;
LAB_000f0025:
          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);
          goto LAB_000f0048;
        }
        local_a8 = 0;
      }
      in_stack_ffffff40 = (Parse *)pCVar11->zName;
      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);
      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);
      in_stack_ffffff38 = pPVar28;
      if (p_00->db->mallocFailed == '\0') {
        iVar4 = p_00->nOp;
        pOVar20 = p_00->aOp;
        pOVar20[iVar4 + -1].p4type = -7;
        pOVar20[iVar4 + -1].p4.p = pcVar16;
      }
      else if (pcVar16 != (char *)0x0) {
        in_stack_ffffff40 = (Parse *)0xf050f;
        sqlite3DbFreeNN(p_00->db,pcVar16);
        in_stack_ffffff38 = pPVar28;
      }
      if (0 < p_00->nOp) {
        p_00->aOp[p_00->nOp + -1].p5 = 1;
      }
      if (local_a8 == 0) goto LAB_000f0048;
      iVar22 = iVar22 + 1;
      in_stack_ffffff40 = (Parse *)0xf014b;
      sqlite3VdbeResolveLabel(p_00,local_a8);
    } while (iVar24 != iVar22);
  }
LAB_000f0158:
  pEVar5 = pTab_00->pCheck;
  if ((pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {
    local_ac = 0;
    pParse_00->iSelfTab = ~(uint)aRegIdx;
    uVar23 = 2;
    if (local_7b != 0xb) {
      uVar23 = regNewData;
    }
    uVar23 = uVar23 & 0xff;
    pEVar25 = pEVar5->a;
    if (0 < pEVar5->nExpr) {
      do {
        pPVar28 = (Parse *)pEVar25->pExpr;
        uVar12 = 0;
        if (_overrideError == (NameContext *)0x0) {
LAB_000f023c:
          iVar24 = pParse_00->nLabel + -1;
          pParse_00->nLabel = iVar24;
          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);
          if (uVar23 == 4) {
            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);
          }
          else {
            pcVar16 = pEVar25->zName;
            if (pcVar16 == (char *)0x0) {
              pcVar16 = pTab_00->zName;
            }
            if (uVar23 == 5) {
              uVar23 = 2;
            }
            pPVar28 = (Parse *)0x0;
            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');
          }
          in_stack_ffffff40 = (Parse *)0xf0295;
          sqlite3VdbeResolveLabel(p_00,iVar24);
          in_stack_ffffff38 = pPVar28;
        }
        else {
          do {
            *(undefined4 *)((int)&w.pParse + uVar12) = 0;
            uVar12 = uVar12 + 4;
          } while (uVar12 < 0x18);
          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);
          w.u.pNC = _overrideError;
          if (pPVar28 == (Parse *)0x0) {
            if (cVar18 == '\0') {
              bVar9 = 0;
              goto LAB_000f0235;
            }
          }
          else {
            in_stack_ffffff40 = (Parse *)0xf0222;
            walkExpr(&w,(Expr *)pPVar28);
            bVar9 = w.eCode;
            if (cVar18 == '\0') {
LAB_000f0235:
              bVar9 = bVar9 & 0xfd;
            }
            if (bVar9 != 0) goto LAB_000f023c;
          }
        }
        local_ac = local_ac + 1;
        pEVar25 = pEVar25 + 1;
      } while (local_ac < pEVar5->nExpr);
    }
    pParse_00->iSelfTab = 0;
  }
  bVar21 = (bool)(cVar18 != '\0' & bVar1);
  if (ignoreDest == 0) {
    local_88 = (Index *)0x0;
    local_58 = 0;
LAB_000f0322:
    if (!bVar21) goto LAB_000f0dc0;
    iVar24 = pParse_00->nLabel + -1;
    pParse_00->nLabel = iVar24;
    uVar23 = regNewData & 0xff;
    if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {
      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {
        uVar23 = 2;
LAB_000f0547:
        local_60 = 0;
        if (iDataCur != 0) goto LAB_000f117a;
      }
      else {
LAB_000f11cd:
        if (*(int *)(ignoreDest + 8) == 0) {
          if (iDataCur == 0) {
            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));
            in_stack_ffffff38 = (Parse *)aRegIdx;
            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);
            goto _L51879;
          }
          local_60 = 0;
          uVar23 = 4;
        }
        else {
          if (iDataCur == 0) {
            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));
            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);
            in_stack_ffffff38 = pParse;
            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);
_L51879:
            local_60 = 0;
            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);
            local_5c = 0;
            goto LAB_000f05be;
          }
          uVar23 = 6;
          local_60 = 0;
        }
LAB_000f117a:
        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);
        if (0 < p_00->nOp) {
          p_00->aOp[p_00->nOp + -1].p5 = 0x90;
        }
      }
      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));
      in_stack_ffffff38 = (Parse *)aRegIdx;
      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);
      if (uVar23 < 7) {
                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();
        return;
      }
      sqlite3RowidConstraint(pParse_00,2,pTab_00);
      local_5c = 0;
    }
    else {
      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;
      if (uVar23 != 5) goto LAB_000f0547;
      local_60 = 0;
      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {
        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);
        local_60 = local_60 + 1;
        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);
      }
      if (iDataCur != 0) goto LAB_000f117a;
      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));
      in_stack_ffffff38 = (Parse *)aRegIdx;
      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);
      if ((db->flags & 0x2000) == 0) {
LAB_000f124c:
        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);
        if (iVar22 == 0) {
          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);
          sqlite3VdbeAppendP4(p_00,pTab_00,-6);
          local_5c = 1;
          if (pTab_00->pIndex != (Index *)0x0) {
            pPVar28 = pParse_00->pToplevel;
            if (pParse_00->pToplevel == (Parse *)0x0) {
              pPVar28 = pParse_00;
            }
            pPVar28->isMultiWrite = '\x01';
            in_stack_ffffff38 = (Parse *)0x0;
            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);
            local_5c = 1;
          }
          goto LAB_000f05be;
        }
      }
      else {
        in_stack_ffffff38 = (Parse *)0x0;
        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);
        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;
      }
      pPVar28 = pParse_00->pToplevel;
      if (pParse_00->pToplevel == (Parse *)0x0) {
        pPVar28 = pParse_00;
      }
      pPVar28->isMultiWrite = '\x01';
      in_stack_ffffff38 = (Parse *)0x5;
      sqlite3GenerateRowDelete
                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48
                 ,in_stack_ffffff4c);
      local_5c = 1;
    }
LAB_000f05be:
    in_stack_ffffff40 = (Parse *)0xf05c7;
    sqlite3VdbeResolveLabel(p_00,iVar24);
    if (local_60 == 0) {
      pIdx = pTab_00->pIndex;
      goto joined_r0x000f05e4;
    }
    local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);
    iVar24 = local_60 + -1;
    if (local_60 + -1 < 0) {
      iVar24 = p_00->nOp + -1;
    }
    pOVar20 = (Op *)(unaff_EDI + 0xccb05);
    if (p_00->db->mallocFailed == '\0') {
      pOVar20 = p_00->aOp + iVar24;
    }
    pOVar20->p2 = p_00->nOp;
    pIdx = pTab_00->pIndex;
    if (pIdx != (Index *)0x0) goto LAB_000f05ea;
  }
  else {
    if (*(int *)ignoreDest != 0) {
      local_88 = *(Index **)(ignoreDest + 0x10);
      local_58 = 0;
      if (local_88 != (Index *)0x0) {
        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);
        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);
        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);
      }
      goto LAB_000f0322;
    }
    if (bVar21) {
      local_7b = 4;
      uVar23 = 4;
      local_6c = (Upsert *)0x0;
      local_58 = 0;
      iVar24 = pParse_00->nLabel + -1;
      pParse_00->nLabel = iVar24;
      local_88 = (Index *)0x0;
      goto LAB_000f0547;
    }
    local_6c = (Upsert *)0x0;
    local_58 = 0;
    local_7b = 4;
    local_88 = (Index *)0x0;
LAB_000f0dc0:
    local_60 = 0;
    pIdx = pTab_00->pIndex;
    local_5c = 0;
joined_r0x000f05e4:
    local_48 = 0;
    if (pIdx == (Index *)0x0) goto LAB_000f0b10;
LAB_000f05ea:
    bVar21 = false;
    local_54 = 0;
    local_9c = 0;
    do {
      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {
LAB_000f0608:
        pIdx = pIdx->pNext;
        local_9c = local_9c + 1;
        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;
      }
      if (pIdx == local_88) {
        local_84 = (char *)(local_58 + 1);
        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);
        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));
        pOVar20 = (Op *)(unaff_EDI + 0xccb05);
        iVar24 = p_00->nOp + -1;
        if (-1 < local_58) {
          iVar24 = local_58;
        }
        if (p_00->db->mallocFailed == '\0') {
          pOVar20 = p_00->aOp + iVar24;
        }
        pOVar20->p2 = p_00->nOp;
        if (!bVar21) goto LAB_000f0d78;
      }
      else {
        local_84 = (char *)(pParse_00->nLabel + -1);
        pParse_00->nLabel = (int)local_84;
        if ((!bVar21) && (local_88 == (Index *)0x0)) {
LAB_000f0d78:
          in_stack_ffffff40 = (Parse *)0xf0d8d;
          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);
          bVar21 = true;
        }
      }
      p1 = pIdx->zName;
      pcVar16 = (char *)(unaff_EDI + 0x6dddd);
      sqlite3VdbeNoopComment(p_00,pcVar16);
      if (pIdx->pPartIdxWhere != (Expr *)0x0) {
        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);
        psVar6 = pParse_00->db;
        pParse_00->iSelfTab = ~(uint)aRegIdx;
        if (pIdx->pPartIdxWhere == (Expr *)0x0) {
          if (psVar6->mallocFailed == '\0') {
            in_stack_ffffff40 = (Parse *)0x10;
            p1 = local_84;
            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);
          }
        }
        else {
          in_stack_ffffff40 = (Parse *)0xf06be;
          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);
          if (psVar6->mallocFailed == '\0') {
            in_stack_ffffff40 = (Parse *)0x10;
            p1 = local_84;
            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);
          }
          if (pEVar14 != (Expr *)0x0) {
            in_stack_ffffff40 = (Parse *)0xf06d7;
            sqlite3ExprDeleteNN(psVar6,pEVar14);
          }
        }
        pParse_00->iSelfTab = 0;
      }
      iVar24 = *(int *)(extraout_ECX + local_9c * 4);
      pPVar28 = (Parse *)(iVar24 + 1);
      if (pIdx->nColumn == 0) {
        uVar23 = 0;
      }
      else {
        pPVar29 = (Parse *)0x0;
        do {
          while( true ) {
            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);
            sVar2 = pIdx->aiColumn[(int)pPVar29];
            iVar24 = (int)sVar2;
            if (iVar24 == -2) break;
            piVar19 = aRegIdx;
            if (iVar24 == -1) {
              uVar10 = 'P';
              iVar22 = p_00->nOp;
              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;
LAB_000f080d:
              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);
            }
            else {
              if (sVar2 != pTab_00->iPKey) {
                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);
              }
              iVar22 = p_00->nOp;
              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;
              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;
LAB_000f0756:
              p_00->nOp = iVar22 + 1;
              pOVar20 = p_00->aOp + iVar22;
              pOVar20->opcode = uVar10;
              pOVar20->p5 = 0;
              pOVar20->p1 = (int)piVar19;
              pOVar20->p2 = (int)p;
              pOVar20->p3 = 0;
              (pOVar20->p4).i = 0;
              pOVar20->p4type = '\0';
              pOVar20->zComment = (char *)0x0;
            }
            p1 = (char *)(unaff_EDI + 0x6cca1);
            if (-1 < iVar24) {
              p1 = pTab_00->aCol[iVar24].zName;
            }
            pPVar29 = (Parse *)((int)&pPVar29->db + 1);
            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));
            uVar23 = (uint)pIdx->nColumn;
            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;
          }
          psVar6 = pParse_00->db;
          pParse_00->iSelfTab = ~(uint)aRegIdx;
          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;
          if (pEVar14 == (Expr *)0x0) {
            if (psVar6->mallocFailed == '\0') {
              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);
            }
          }
          else {
            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);
            if (psVar6->mallocFailed == '\0') {
              sqlite3ExprCode(pParse_00,pEVar14,(int)p);
            }
            if (pEVar14 != (Expr *)0x0) {
              sqlite3ExprDeleteNN(psVar6,pEVar14);
            }
          }
          pParse_00->iSelfTab = 0;
          pPVar17 = (Parse *)((int)&pPVar29->db + 1);
          p1 = pIdx->zName;
          in_stack_ffffff40 = pPVar29;
          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));
          uVar23 = (uint)pIdx->nColumn;
          pPVar29 = pPVar17;
        } while ((int)pPVar17 < (int)uVar23);
LAB_000f0926:
        iVar24 = *(int *)(extraout_ECX + local_9c * 4);
      }
      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);
      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);
      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);
      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||
         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {
        in_stack_ffffff40 = (Parse *)0xf0c23;
        sqlite3VdbeResolveLabel(p_00,(int)local_84);
        goto LAB_000f0608;
      }
      if (local_7b == 0xb) {
        if (uVar23 == 0xb) {
          uVar23 = 2;
        }
        if (pIdx != local_88) goto LAB_000f09ad;
LAB_000f0c5d:
        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;
        bVar8 = bVar26;
      }
      else {
        uVar23 = (uint)local_7b;
        if (pIdx == local_88) goto LAB_000f0c5d;
LAB_000f09ad:
        bVar8 = uVar23 == 5 || bVar26;
      }
      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);
      in_stack_ffffff38 = pPVar28;
      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);
      local_b0 = pPVar28;
      if (local_80 != pIdx) {
        in_stack_ffffff40 = (Parse *)0xf0a00;
        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);
      }
      if (bVar8) {
        if ((pTab_00->tabFlags & 0x20) == 0) {
          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);
          if (iDataCur != 0) {
            in_stack_ffffff38 = (Parse *)iDataCur;
            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);
            if (0 < p_00->nOp) {
              p_00->aOp[p_00->nOp + -1].p5 = 0x90;
            }
          }
        }
        else {
          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {
            iVar24 = 0;
            do {
              if (pIdx->nColumn == 0) {
LAB_000f0f72:
                uVar12 = 0xffffffff;
              }
              else {
                uVar12 = 0;
                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {
                  do {
                    uVar12 = uVar12 + 1;
                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;
                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);
                  uVar12 = (uint)(short)uVar12;
                }
              }
              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);
              iVar22 = iVar24 + 1;
              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);
              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,
                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);
              iVar24 = iVar22;
            } while (iVar22 < (int)(uint)local_80->nKeyCol);
          }
          if (iDataCur != 0) {
            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);
            pPVar17 = local_b0;
            if ((pIdx->field_0x37 & 3) == 2) {
              pPVar17 = pPVar28;
            }
            if (local_80->nKeyCol != 0) {
              local_94 = 0x34;
              iVar24 = 0;
              do {
                while( true ) {
                  in_stack_ffffff40 = (Parse *)0xf104f;
                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);
                  if (local_80->nKeyCol - 1 == iVar24) {
                    pcVar16 = local_84;
                    local_94 = 0x35;
                  }
                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);
                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,
                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,
                                             (int)pcVar16,(int)in_stack_ffffff38);
                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);
                  if (p_00->nOp < 1) break;
                  iVar24 = iVar24 + 1;
                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;
                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;
                }
                iVar24 = iVar24 + 1;
              } while (iVar24 < (int)(uint)local_80->nKeyCol);
            }
          }
        }
      }
LAB_000f0a30:
      if (uVar23 == 4) {
LAB_000f0b65:
        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);
        if (pIdx != local_88) goto LAB_000f0a5e;
LAB_000f0b8a:
        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);
        iVar24 = p_00->nOp + -1;
        if (-1 < local_54) {
          iVar24 = local_54;
        }
        pOVar20 = (Op *)(unaff_EDI + 0xccb05);
        if (p_00->db->mallocFailed == '\0') {
          pOVar20 = p_00->aOp + iVar24;
        }
        pOVar20->p2 = p_00->nOp;
      }
      else {
        if ((int)uVar23 < 5) {
          if ((int)uVar23 < 1) goto LAB_000f0c80;
          pPVar29 = (Parse *)0xf0a54;
          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);
        }
        else {
          if (uVar23 == 6) {
            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);
            in_stack_ffffff38 = pPVar29;
            goto LAB_000f0b65;
          }
LAB_000f0c80:
          if ((((db->flags & 0x2000) != 0) &&
              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),
              pTVar13 != (Trigger *)0x0)) ||
             (((pParse_00->db->flags & 0x4000) != 0 &&
              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0
                                             ), pHVar15->data != (void *)0x0 ||
               (pTab_00->pFKey != (FKey *)0x0)))))) {
            pPVar17 = pParse_00->pToplevel;
            if (pParse_00->pToplevel == (Parse *)0x0) {
              pPVar17 = pParse_00;
            }
            pPVar17->isMultiWrite = '\x01';
          }
          in_stack_ffffff38 = (Parse *)0x5;
          sqlite3GenerateRowDelete
                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,
                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,
                     in_stack_ffffff4c);
          local_5c = 1;
        }
        in_stack_ffffff40 = pPVar29;
        if (pIdx == local_88) goto LAB_000f0b8a;
LAB_000f0a5e:
        in_stack_ffffff40 = (Parse *)0xf0a69;
        sqlite3VdbeResolveLabel(p_00,(int)local_84);
      }
      if (local_b0 == pPVar28) goto LAB_000f0608;
      if (local_78 == 1) {
        if (local_b0 != (Parse *)0x0) {
          bVar1 = pParse_00->nTempReg;
          if (bVar1 < 8) {
            pParse_00->nTempReg = bVar1 + 1;
            pParse_00->aTempReg[bVar1] = (int)local_b0;
          }
        }
        goto LAB_000f0608;
      }
      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;
      pParse_00->nRangeReg = local_78;
      local_9c = local_9c + 1;
      pParse_00->iRangeReg = (int)local_b0;
      pIdx = pIdx->pNext;
    } while (pIdx != (Index *)0x0);
LAB_000f0ab0:
    if (local_60 == 0) goto LAB_000f0b10;
  }
  sqlite3VdbeAddOp3(p_00,0xb,0,local_60,(int)in_stack_ffffff38);
  sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6de02));
  iVar24 = p_00->nOp;
  iVar22 = iVar24 + -1;
  if (-1 < local_48) {
    iVar22 = local_48;
  }
  if (p_00->db->mallocFailed == '\0') {
    p_00->aOp[iVar22].p2 = iVar24;
  }
  else {
    *(int *)(unaff_EDI + 0xccb0d) = iVar24;
  }
LAB_000f0b10:
  *_pkChng = local_5c;
  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return;
}



void FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,
                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)

{
  char *pcVar1;
  byte bVar2;
  short sVar3;
  int iVar4;
  code *pcVar5;
  bool bVar6;
  byte bVar7;
  byte bVar8;
  char cVar9;
  int *piVar10;
  int *piVar11;
  undefined4 *puVar12;
  uint uVar13;
  uint uVar14;
  int *piVar15;
  int extraout_ECX;
  int *piVar16;
  bool bVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int unaff_EDI;
  int iVar21;
  int *piVar22;
  int in_GS_OFFSET;
  bool bVar23;
  undefined8 uVar24;
  int local_b0;
  int local_ac;
  int local_a8;
  int local_9c;
  undefined4 *local_88;
  int local_84;
  undefined4 *local_80;
  byte local_7b;
  uint local_78;
  int *local_6c;
  int local_60;
  undefined4 local_5c;
  int local_58;
  int local_54;
  int local_48;
  int local_3c [5];
  byte local_28;
  int local_24;
  int local_20;
  
  uVar24 = FUN_0003a401();
  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);
  piVar10 = (int *)uVar24;
  piVar11 = (int *)piVar10[2];
  local_6c = param_10;
  local_7b = param_6;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar4 = *piVar10;
  bVar23 = param_4 != 0;
  if (piVar11 == (int *)0x0) {
    piVar11 = (int *)FUN_00073350();
  }
  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);
  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {
    bVar2 = 1;
    local_78 = 1;
    local_80 = (undefined4 *)0x0;
  }
  else {
    local_80 = (undefined4 *)piVar16[2];
    if (local_80 == (undefined4 *)0x0) {
FUN_000157a6:
                    /* WARNING: Does not return */
      pcVar5 = (code *)invalidInstructionException();
      (*pcVar5)();
    }
    bVar2 = *(byte *)((int)local_80 + 0x37);
    while ((bVar2 & 3) != 2) {
      local_80 = (undefined4 *)local_80[5];
      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;
      bVar2 = *(byte *)((int)local_80 + 0x37);
    }
    bVar2 = 0;
    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);
  }
  iVar18 = 0;
  if (0 < iVar21) {
    do {
      while (((short)piVar16[10] == iVar18 ||
             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {
LAB_000f0048:
        iVar18 = iVar18 + 1;
        if (iVar21 == iVar18) goto LAB_000f0158;
      }
      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);
      bVar7 = *(byte *)(puVar12 + 3);
      if (bVar7 == 0) goto LAB_000f0048;
      bVar8 = param_6;
      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {
LAB_000f009f:
        local_a8 = 0;
LAB_000f00a7:
        bVar8 = 2;
        piVar15 = (int *)piVar10[0x1d];
        if ((int *)piVar10[0x1d] == (int *)0x0) {
          piVar15 = piVar10;
        }
        *(undefined1 *)((int)piVar15 + 0x15) = 1;
        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);
      }
      else {
        if (bVar8 == 5) {
          local_a8 = 0;
          if (puVar12[1] != 0) {
LAB_000f04a3:
            local_a8 = piVar10[0xe] + -1;
            piVar10[0xe] = local_a8;
            FUN_00073150(local_a8);
            FUN_000cb850();
            FUN_00073150(local_a8);
          }
          goto LAB_000f00a7;
        }
        if (bVar8 == 2) goto LAB_000f009f;
        if (bVar8 < 3) {
          if (bVar8 != 1) goto LAB_000f0025;
        }
        else if (bVar8 != 3) {
          if (bVar8 == 5) goto LAB_000f04a3;
LAB_000f0025:
          FUN_00073150(param_7);
          goto LAB_000f0048;
        }
        local_a8 = 0;
      }
      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);
      FUN_00072f80(bVar8,param_3 + 1 + iVar18);
      if (*(char *)(*piVar11 + 0x4d) == '\0') {
        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;
        *(undefined1 *)(iVar20 + 1) = 0xf9;
        *(int *)(iVar20 + 0x10) = iVar19;
      }
      else if (iVar19 != 0) {
        FUN_00044090();
      }
      if (0 < piVar11[0x1a]) {
        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;
      }
      if (local_a8 == 0) goto LAB_000f0048;
      iVar18 = iVar18 + 1;
      FUN_0006dec0();
    } while (iVar21 != iVar18);
  }
LAB_000f0158:
  piVar15 = (int *)piVar16[6];
  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {
    local_ac = 0;
    piVar10[0xd] = ~param_3;
    bVar7 = 2;
    if (param_6 != 0xb) {
      bVar7 = param_6;
    }
    piVar22 = piVar15 + 1;
    if (0 < *piVar15) {
      do {
        iVar21 = *piVar22;
        uVar13 = 0;
        if (param_9 == 0) {
LAB_000f023c:
          iVar18 = piVar10[0xe];
          piVar10[0xe] = iVar18 + -1;
          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);
          if (bVar7 == 4) {
            FUN_00073150(param_7);
          }
          else {
            iVar21 = piVar22[1];
            if (iVar21 == 0) {
              iVar21 = *piVar16;
            }
            if (bVar7 == 5) {
              bVar7 = 2;
            }
            FUN_000744c0(iVar21,0,3);
          }
          FUN_0006dec0();
        }
        else {
          do {
            *(undefined4 *)((int)local_3c + uVar13) = 0;
            uVar13 = uVar13 + 4;
          } while (uVar13 < 0x18);
          local_3c[1] = unaff_EDI + -0xa9f97;
          local_24 = param_9;
          if (iVar21 == 0) {
            if (param_5 == '\0') {
              bVar8 = 0;
              goto LAB_000f0235;
            }
          }
          else {
            FUN_0005c830();
            bVar8 = local_28;
            if (param_5 == '\0') {
LAB_000f0235:
              bVar8 = bVar8 & 0xfd;
            }
            if (bVar8 != 0) goto LAB_000f023c;
          }
        }
        local_ac = local_ac + 1;
        piVar22 = piVar22 + 5;
      } while (local_ac < *piVar15);
    }
    piVar10[0xd] = 0;
  }
  bVar17 = (bool)(param_5 != '\0' & bVar2);
  if (param_10 == (int *)0x0) {
    local_88 = (undefined4 *)0x0;
    local_58 = 0;
LAB_000f0322:
    if (!bVar17) goto LAB_000f0dc0;
    iVar21 = piVar10[0xe] + -1;
    piVar10[0xe] = iVar21;
    uVar13 = (uint)param_6;
    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {
      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {
        uVar13 = 2;
LAB_000f0547:
        local_60 = 0;
        if (param_4 != 0) goto LAB_000f117a;
      }
      else {
LAB_000f11cd:
        if (param_10[2] == 0) {
          if (param_4 == 0) {
            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
            FUN_00072f80(iVar21,param_3);
            goto LAB_000f0870;
          }
          local_60 = 0;
          uVar13 = 4;
        }
        else {
          if (param_4 == 0) {
            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
            FUN_00072f80(iVar21,param_3);
            FUN_000f3260(0,param_1);
LAB_000f0870:
            local_60 = 0;
            FUN_00073150(param_7);
            local_5c = 0;
            goto LAB_000f05be;
          }
          uVar13 = 6;
          local_60 = 0;
        }
LAB_000f117a:
        FUN_00072f80(iVar21,param_4);
        if (0 < piVar11[0x1a]) {
          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;
        }
      }
      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
      FUN_00072f80(iVar21,param_3);
      if (uVar13 < 7) {
                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();
        return;
      }
      FUN_00086c60();
      local_5c = 0;
    }
    else {
      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;
      if (uVar13 != 5) goto LAB_000f0547;
      local_60 = 0;
      if ((param_6 != 5) && (piVar16[2] != 0)) {
        local_60 = FUN_00073150(0);
        local_60 = local_60 + 1;
        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);
      }
      if (param_4 != 0) goto LAB_000f117a;
      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
      FUN_00072f80(iVar21,param_3);
      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&
         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {
        FUN_00073150(0x40);
        FUN_000626c0();
        local_5c = 1;
        if (piVar16[2] != 0) {
          piVar15 = (int *)piVar10[0x1d];
          if ((int *)piVar10[0x1d] == (int *)0x0) {
            piVar15 = piVar10;
          }
          *(undefined1 *)(piVar15 + 5) = 1;
          FUN_000d1920(param_2,0,0xffffffff);
          local_5c = 1;
        }
      }
      else {
        piVar15 = (int *)piVar10[0x1d];
        if ((int *)piVar10[0x1d] == (int *)0x0) {
          piVar15 = piVar10;
        }
        *(undefined1 *)(piVar15 + 5) = 1;
        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);
        local_5c = 1;
      }
    }
LAB_000f05be:
    FUN_0006dec0();
    if (local_60 == 0) {
      puVar12 = (undefined4 *)piVar16[2];
      goto joined_r0x000f05e4;
    }
    local_48 = FUN_00073150(0);
    iVar21 = local_60 + -1;
    if (local_60 + -1 < 0) {
      iVar21 = piVar11[0x1a] + -1;
    }
    iVar18 = unaff_EDI + 0xccb05;
    if (*(char *)(*piVar11 + 0x4d) == '\0') {
      iVar18 = piVar11[0x19] + iVar21 * 0x18;
    }
    *(int *)(iVar18 + 8) = piVar11[0x1a];
    puVar12 = (undefined4 *)piVar16[2];
    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;
  }
  else {
    if (*param_10 != 0) {
      local_88 = (undefined4 *)param_10[4];
      local_58 = 0;
      if (local_88 != (undefined4 *)0x0) {
        local_58 = FUN_00073150(0);
        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);
      }
      goto LAB_000f0322;
    }
    if (bVar17) {
      local_7b = 4;
      uVar13 = 4;
      local_6c = (int *)0x0;
      local_58 = 0;
      iVar21 = piVar10[0xe] + -1;
      piVar10[0xe] = iVar21;
      local_88 = (undefined4 *)0x0;
      goto LAB_000f0547;
    }
    local_6c = (int *)0x0;
    local_58 = 0;
    local_7b = 4;
    local_88 = (undefined4 *)0x0;
LAB_000f0dc0:
    local_60 = 0;
    puVar12 = (undefined4 *)piVar16[2];
    local_5c = 0;
joined_r0x000f05e4:
    local_48 = 0;
    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;
LAB_000f05ea:
    bVar17 = false;
    local_54 = 0;
    local_9c = 0;
    do {
      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {
LAB_000f0608:
        puVar12 = (undefined4 *)puVar12[5];
        local_9c = local_9c + 1;
        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;
      }
      if (puVar12 == local_88) {
        local_84 = local_58 + 1;
        local_54 = FUN_00073150(0);
        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);
        iVar21 = unaff_EDI + 0xccb05;
        iVar18 = piVar11[0x1a] + -1;
        if (-1 < local_58) {
          iVar18 = local_58;
        }
        if (*(char *)(*piVar11 + 0x4d) == '\0') {
          iVar21 = piVar11[0x19] + iVar18 * 0x18;
        }
        *(int *)(iVar21 + 8) = piVar11[0x1a];
        if (!bVar17) goto LAB_000f0d78;
      }
      else {
        local_84 = piVar10[0xe] + -1;
        piVar10[0xe] = local_84;
        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {
LAB_000f0d78:
          FUN_00073230();
          bVar17 = true;
        }
      }
      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);
      if (puVar12[9] != 0) {
        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));
        iVar21 = *piVar10;
        piVar10[0xd] = ~param_3;
        if (puVar12[9] == 0) {
          if (*(char *)(iVar21 + 0x4d) == '\0') {
            FUN_000c9bf0(piVar10,0,local_84,0x10);
          }
        }
        else {
          iVar18 = FUN_0005e9a0();
          if (*(char *)(iVar21 + 0x4d) == '\0') {
            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);
          }
          if (iVar18 != 0) {
            FUN_00063d60();
          }
        }
        piVar10[0xd] = 0;
      }
      iVar18 = *(int *)(extraout_ECX + local_9c * 4);
      iVar21 = iVar18 + 1;
      if (*(short *)(puVar12 + 0xd) == 0) {
        uVar13 = 0;
      }
      else {
        iVar18 = 0;
        do {
          while( true ) {
            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);
            iVar19 = (int)sVar3;
            if (iVar19 == -2) break;
            uVar13 = param_3;
            if (iVar19 == -1) {
              cVar9 = 'P';
              iVar20 = piVar11[0x1a];
              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;
LAB_000f080d:
              FUN_00072e30(iVar21 + iVar18,0);
            }
            else {
              if (sVar3 != (short)piVar16[10]) {
                uVar13 = param_3 + 1 + iVar19;
              }
              iVar20 = piVar11[0x1a];
              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;
              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;
LAB_000f0756:
              piVar11[0x1a] = iVar20 + 1;
              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);
              *pcVar1 = cVar9;
              pcVar1[2] = '\0';
              pcVar1[3] = '\0';
              *(uint *)(pcVar1 + 4) = uVar13;
              *(int *)(pcVar1 + 8) = iVar21 + iVar18;
              pcVar1[0xc] = '\0';
              pcVar1[0xd] = '\0';
              pcVar1[0xe] = '\0';
              pcVar1[0xf] = '\0';
              pcVar1[0x10] = '\0';
              pcVar1[0x11] = '\0';
              pcVar1[0x12] = '\0';
              pcVar1[0x13] = '\0';
              pcVar1[1] = '\0';
              pcVar1[0x14] = '\0';
              pcVar1[0x15] = '\0';
              pcVar1[0x16] = '\0';
              pcVar1[0x17] = '\0';
            }
            iVar20 = unaff_EDI + 0x6cca1;
            if (-1 < iVar19) {
              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);
            }
            iVar18 = iVar18 + 1;
            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);
            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);
            if ((int)uVar13 <= iVar18) goto LAB_000f0926;
          }
          iVar19 = *piVar10;
          piVar10[0xd] = ~param_3;
          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {
            if (*(char *)(iVar19 + 0x4d) == '\0') {
              FUN_000cb850();
            }
          }
          else {
            iVar20 = FUN_0005e9a0();
            if (*(char *)(iVar19 + 0x4d) == '\0') {
              FUN_000cb850();
            }
            if (iVar20 != 0) {
              FUN_00063d60();
            }
          }
          piVar10[0xd] = 0;
          iVar19 = iVar18 + 1;
          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);
          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);
          iVar18 = iVar19;
        } while (iVar19 < (int)uVar13);
LAB_000f0926:
        iVar18 = *(int *)(extraout_ECX + local_9c * 4);
      }
      FUN_00072f80(uVar13,iVar18);
      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);
      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||
         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {
        FUN_0006dec0();
        goto LAB_000f0608;
      }
      if (local_7b == 0xb) {
        if (uVar13 == 0xb) {
          uVar13 = 2;
        }
        if (puVar12 != local_88) goto LAB_000f09ad;
LAB_000f0c5d:
        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;
        bVar6 = bVar23;
      }
      else {
        uVar13 = (uint)local_7b;
        if (puVar12 == local_88) goto LAB_000f0c5d;
LAB_000f09ad:
        bVar6 = uVar13 == 5 || bVar23;
      }
      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));
      local_b0 = iVar21;
      if (local_80 != puVar12) {
        local_b0 = FUN_00045e40();
      }
      if (bVar6) {
        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {
          FUN_00073150(local_b0);
          if (param_4 != 0) {
            FUN_00072f80(local_84,param_4);
            if (0 < piVar11[0x1a]) {
              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;
            }
          }
        }
        else {
          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {
            iVar18 = 0;
            do {
              iVar19 = iVar18 * 2;
              sVar3 = *(short *)(local_80[1] + iVar18 * 2);
              if (*(ushort *)(puVar12 + 0xd) == 0) {
LAB_000f0f72:
                uVar14 = 0xffffffff;
              }
              else {
                uVar14 = 0;
                if (sVar3 != *(short *)puVar12[1]) {
                  do {
                    uVar14 = uVar14 + 1;
                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;
                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);
                  uVar14 = (uint)(short)uVar14;
                }
              }
              iVar20 = local_b0 + iVar18;
              iVar18 = iVar18 + 1;
              FUN_00072f80(uVar14,iVar20);
              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,
                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));
            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));
          }
          if (param_4 != 0) {
            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);
            iVar18 = local_b0;
            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {
              iVar18 = iVar21;
            }
            if (*(ushort *)((int)local_80 + 0x32) != 0) {
              iVar20 = 0;
              do {
                while( true ) {
                  FUN_0008c270();
                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {
                    iVar19 = local_84;
                  }
                  FUN_00072f80(iVar19,iVar18 + iVar20);
                  FUN_00062750(0xfffffffe);
                  if (piVar11[0x1a] < 1) break;
                  iVar20 = iVar20 + 1;
                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;
                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;
                }
                iVar20 = iVar20 + 1;
              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));
            }
          }
        }
      }
LAB_000f0a30:
      if (uVar13 == 4) {
LAB_000f0b65:
        FUN_00073150(param_7);
        if (puVar12 != local_88) goto LAB_000f0a5e;
LAB_000f0b8a:
        FUN_00073150(local_58 + 1);
        iVar18 = piVar11[0x1a] + -1;
        if (-1 < local_54) {
          iVar18 = local_54;
        }
        iVar19 = unaff_EDI + 0xccb05;
        if (*(char *)(*piVar11 + 0x4d) == '\0') {
          iVar19 = piVar11[0x19] + iVar18 * 0x18;
        }
        *(int *)(iVar19 + 8) = piVar11[0x1a];
      }
      else {
        if ((int)uVar13 < 5) {
          if ((int)uVar13 < 1) goto LAB_000f0c80;
          FUN_00097090();
        }
        else {
          if (uVar13 == 6) {
            FUN_000f3260(puVar12,local_9c + param_2);
            goto LAB_000f0b65;
          }
LAB_000f0c80:
          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))
             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&
                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {
            piVar15 = (int *)piVar10[0x1d];
            if ((int *)piVar10[0x1d] == (int *)0x0) {
              piVar15 = piVar10;
            }
            *(undefined1 *)(piVar15 + 5) = 1;
          }
          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,
                       local_9c + param_2);
          local_5c = 1;
        }
        if (puVar12 == local_88) goto LAB_000f0b8a;
LAB_000f0a5e:
        FUN_0006dec0();
      }
      if (local_b0 == iVar21) goto LAB_000f0608;
      if (local_78 == 1) {
        if (local_b0 != 0) {
          bVar2 = *(byte *)((int)piVar10 + 0x13);
          if (bVar2 < 8) {
            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;
            piVar10[bVar2 + 0x24] = local_b0;
          }
        }
        goto LAB_000f0608;
      }
      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;
      piVar10[7] = local_78;
      local_9c = local_9c + 1;
      piVar10[8] = local_b0;
      puVar12 = (undefined4 *)puVar12[5];
    } while (puVar12 != (undefined4 *)0x0);
LAB_000f0ab0:
    if (local_60 == 0) goto LAB_000f0b10;
  }
  FUN_00073150(local_60);
  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);
  iVar4 = piVar11[0x1a];
  iVar21 = iVar4 + -1;
  if (-1 < local_48) {
    iVar21 = local_48;
  }
  if (*(char *)(*piVar11 + 0x4d) == '\0') {
    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;
  }
  else {
    *(int *)(unaff_EDI + 0xccb0d) = iVar4;
  }
LAB_000f0b10:
  *param_8 = local_5c;
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00153870();
  }
  return;
}


PUSH EBP
PUSH EDI
CALL 0x0003a401
ADD EDI,0xcaf71
PUSH ESI
PUSH EBX
SUB ESP,0xac
MOV EBP,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x30],ECX
MOV EBX,dword ptr [ESP + 0xdc]
MOV dword ptr [ESP + 0x2c],EDI
MOV ECX,dword ptr [ESP + 0xe4]
MOV EDI,dword ptr [ESP + 0xd0]
MOV ESI,dword ptr [ESP + 0xd4]
MOV dword ptr [ESP + 0x70],EBX
MOV dword ptr [ESP + 0x50],ECX
MOV EBX,dword ptr [ESP + 0xe0]
MOV ECX,EDI
MOV dword ptr [ESP + 0x18],EDX
MOV EDX,dword ptr [ESP + 0xcc]
MOV byte ptr [ESP + 0x43],CL
MOV ECX,ESI
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x38],EDI
MOV dword ptr [ESP + 0x4c],ESI
MOV dword ptr [ESP + 0xc],EBX
MOV byte ptr [ESP + 0x41],CL
MOV EDI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x9c],EDI
XOR EDI,EDI
MOV EDI,dword ptr [EAX]
TEST EDX,EDX
SETNZ byte ptr [ESP + 0x42]
MOV dword ptr [ESP + 0x48],EDI
TEST EBP,EBP
JNZ 0x000eff4a
CALL 0x00073350
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EDI,word ptr [EAX + 0x2a]
MOV dword ptr [ESP + 0x10],EDI
TEST byte ptr [EAX + 0x24],0x20
JZ 0x000effb0
MOV EDI,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x3c],EDI
TEST EDI,EDI
JZ 0x000157a6
MOVZX ECX,byte ptr [EDI + 0x37]
MOV EAX,ECX
MOV byte ptr [ESP + 0x14],CL
AND EAX,0x3
CMP AL,0x2
JZ 0x000eff9b
MOV EAX,EDI
NOP
MOV EAX,dword ptr [EAX + 0x14]
TEST EAX,EAX
JZ 0x000157a6
MOVZX EDX,byte ptr [EAX + 0x37]
AND EDX,0x3
CMP DL,0x2
JNZ 0x000eff80
MOV dword ptr [ESP + 0x3c],EAX
MOV EAX,dword ptr [ESP + 0x3c]
MOV byte ptr [ESP + 0x54],0x0
MOVZX EAX,word ptr [EAX + 0x32]
MOV dword ptr [ESP + 0x44],EAX
JMP 0x000effc5
MOV byte ptr [ESP + 0x54],0x1
MOV dword ptr [ESP + 0x44],0x1
MOV dword ptr [ESP + 0x3c],0x0
MOV EAX,dword ptr [ESP + 0xc8]
XOR EBX,EBX
MOV EDI,dword ptr [ESP + 0x18]
ADD EAX,0x1
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x2c]
LEA EAX,[EAX + 0xfffa2dee]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JG 0x000f0055
JMP 0x000f0158
MOVZX EDX,CL
CMP EDX,0x5
JZ 0x000f0490
CMP EDX,0x2
JZ 0x000f009f
JLE 0x000f0470
CMP EDX,0x3
JZ 0x000f0479
CMP EDX,0x5
JZ 0x000f04a3
SUB ESP,0xc
MOV EDX,0x32
MOV EAX,EBP
PUSH dword ptr [ESP + 0xe4]
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x00073150
ADD ESP,0x10
LEA ESI,[ESI]
ADD EBX,0x1
CMP dword ptr [ESP + 0x10],EBX
JZ 0x000f0158
MOVSX EAX,word ptr [EDI + 0x28]
CMP EAX,EBX
JZ 0x000f0048
MOV EAX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x000f006c
MOV EAX,dword ptr [EAX + EBX*0x4]
TEST EAX,EAX
JS 0x000f0048
MOV ESI,EBX
MOV EAX,dword ptr [EDI + 0x4]
SHL ESI,0x4
ADD EAX,ESI
MOVZX EDX,byte ptr [EAX + 0xc]
TEST EDX,EDX
JZ 0x000f0048
MOV ECX,dword ptr [ESP + 0x28]
ADD ECX,EBX
MOV dword ptr [ESP + 0x20],ECX
MOVZX ECX,byte ptr [ESP + 0x41]
CMP CL,0xb
JNZ 0x000efff8
CMP EDX,0xb
JNZ 0x000efffb
MOV dword ptr [ESP + 0x14],0x0
MOV ECX,dword ptr [ESP + 0x1c]
MOV EDX,0x2
MOV EAX,dword ptr [ECX + 0x74]
TEST EAX,EAX
CMOVZ EAX,ECX
MOV byte ptr [EAX + 0x15],0x1
MOV EAX,dword ptr [EDI + 0x4]
ADD EAX,ESI
MOV dword ptr [ESP + 0x24],EDX
PUSH dword ptr [EAX]
PUSH dword ptr [EDI]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x54]
CALL 0x000861f0
MOV ECX,0x513
MOV ESI,EAX
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,EBP
PUSH EDX
MOV EDX,0x44
CALL 0x00072f80
MOV EAX,dword ptr [EBP]
ADD ESP,0x10
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000f0500
MOV EAX,dword ptr [EBP + 0x68]
LEA EDX,[EAX + EAX*0x2]
MOV EAX,dword ptr [EBP + 0x64]
LEA EAX,[EAX + EDX*0x8 + -0x18]
MOV byte ptr [EAX + 0x1],0xf9
MOV dword ptr [EAX + 0x10],ESI
MOV EAX,dword ptr [EBP + 0x68]
TEST EAX,EAX
JLE 0x000f0131
MOV EDX,dword ptr [EBP + 0x64]
LEA EAX,[EAX + EAX*0x2]
MOV ECX,0x1
LEA EAX,[EDX + EAX*0x8]
MOV word ptr [EAX + -0x16],CX
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JZ 0x000f0048
MOV EDX,dword ptr [ESP + 0x14]
MOV EAX,EBP
ADD EBX,0x1
CALL 0x0006dec0
CMP dword ptr [ESP + 0x10],EBX
JNZ 0x000f0055
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JZ 0x000f02bc
MOV EAX,dword ptr [ESP + 0x48]
TEST byte ptr [EAX + 0x1d],0x2
JNZ 0x000f02bc
MOV EAX,dword ptr [ESP + 0xc8]
MOV EDI,dword ptr [ESP + 0x1c]
LEA EBX,[ESP + 0x80]
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [ESP + 0x20],EBX
NOT EAX
MOV dword ptr [EDI + 0x34],EAX
MOV EDI,dword ptr [ESP + 0x4c]
MOV EAX,EDI
CMP AL,0xb
MOV EAX,0x2
CMOVNZ EAX,EDI
MOVZX ESI,AL
MOV EAX,dword ptr [ESP + 0x14]
LEA EDI,[EAX + 0x4]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JLE 0x000f02b1
MOV dword ptr [ESP + 0x24],EBP
MOV EBP,dword ptr [ESP + 0x1c]
LEA ESI,[ESI]
NOP
MOV EBX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [EDI]
XOR EAX,EAX
MOV EDX,dword ptr [ESP + 0x20]
TEST EBX,EBX
JZ 0x000f023c
MOV dword ptr [EDX + EAX*0x1],0x0
ADD EAX,0x4
CMP EAX,0x18
JC 0x000f01e0
MOV EAX,dword ptr [ESP + 0x2c]
LEA EAX,[EAX + 0xffe8b0f8]
MOV dword ptr [ESP + 0x84],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x98],EAX
TEST ECX,ECX
JZ 0x000f0c30
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,ECX
MOV dword ptr [ESP + 0x28],ECX
CALL 0x0005c830
CMP byte ptr [ESP + 0x43],0x0
MOV ECX,dword ptr [ESP + 0x28]
MOVZX EAX,byte ptr [ESP + 0x94]
JNZ 0x000f0238
AND EAX,0xfffffffd
TEST AL,AL
JZ 0x000f0295
MOV EAX,dword ptr [EBP + 0x38]
LEA EBX,[EAX + -0x1]
MOV dword ptr [EBP + 0x38],EBX
PUSH 0x10
PUSH EBX
PUSH ECX
PUSH EBP
CALL 0x000c97d0
ADD ESP,0x10
CMP ESI,0x4
JZ 0x000f0e30
MOV EAX,dword ptr [EDI + 0x4]
TEST EAX,EAX
JZ 0x000f0da0
CMP ESI,0x5
MOV EDX,0x2
CMOVZ ESI,EDX
SUB ESP,0x4
MOV EDX,0x113
PUSH 0x3
PUSH 0x0
MOV ECX,ESI
PUSH EAX
MOV EAX,EBP
CALL 0x000744c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x24]
MOV EDX,EBX
CALL 0x0006dec0
MOV EBX,dword ptr [ESP + 0x14]
ADD dword ptr [ESP + 0x10],0x1
ADD EDI,0x14
MOV EAX,dword ptr [ESP + 0x10]
CMP dword ptr [EBX],EAX
JG 0x000f01d0
MOV EBP,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX + 0x34],0x0
MOV EAX,dword ptr [ESP + 0x50]
CMP byte ptr [ESP + 0x38],0x0
SETNZ BL
AND BL,byte ptr [ESP + 0x54]
TEST EAX,EAX
JZ 0x000f112e
MOV EDI,dword ptr [EAX]
MOV dword ptr [ESP + 0x34],EDI
TEST EDI,EDI
JZ 0x000f0514
MOV EAX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0x64],0x0
MOV dword ptr [ESP + 0x34],EAX
TEST EAX,EAX
JZ 0x000f0322
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBP
PUSH 0x0
CALL 0x00073150
MOV dword ptr [ESP + 0x74],EAX
POP EAX
POP EDX
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e00]
PUSH EAX
PUSH EBP
CALL 0x0007e240
ADD ESP,0x10
TEST BL,BL
JZ 0x000f0dc0
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDI,dword ptr [EAX + 0x38]
LEA ESI,[EDI + -0x1]
MOV dword ptr [ESP + 0xc],EDI
MOV dword ptr [EAX + 0x38],ESI
MOV EAX,dword ptr [ESP + 0x4c]
MOVZX EBX,AL
CMP AL,0xb
JZ 0x000f12f0
MOV EAX,dword ptr [ESP + 0x50]
TEST EAX,EAX
JZ 0x000f035d
MOV EDI,dword ptr [EAX + 0x10]
TEST EDI,EDI
JZ 0x000f11cd
CMP EBX,0x5
JNZ 0x000f0547
CMP byte ptr [ESP + 0x4c],0x5
MOV dword ptr [ESP + 0x5c],0x0
JZ 0x000f03b0
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x000f03b0
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBP
PUSH 0x0
CALL 0x00073150
ADD EAX,0x1
MOV dword ptr [ESP + 0x6c],EAX
POP EAX
POP EDX
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e1d]
PUSH EAX
PUSH EBP
CALL 0x0007e240
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xcc]
TEST ECX,ECX
JNZ 0x000f117a
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e3a]
PUSH EAX
PUSH EBP
CALL 0x0007e150
POP EBX
POP EDI
PUSH dword ptr [ESP + 0xd0]
PUSH ESI
MOV EDX,0x1f
MOV EAX,EBP
MOV ECX,dword ptr [ESP + 0xd0]
CALL 0x00072f80
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x48]
TEST byte ptr [EAX + 0x1d],0x20
JZ 0x000f124c
SUB ESP,0x8
MOV ECX,0x75
PUSH 0x0
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x00049a60
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x000f124c
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [EAX + 0x74]
TEST EDX,EDX
CMOVZ EDX,EAX
MOV byte ptr [EDX + 0x14],0x1
PUSH -0x1
PUSH 0x1
PUSH 0x5
PUSH 0x0
PUSH 0x1
PUSH dword ptr [ESP + 0xdc]
PUSH dword ptr [ESP + 0xdc]
PUSH dword ptr [ESP + 0xdc]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x000efa90
ADD ESP,0x20
MOV dword ptr [ESP + 0x60],0x1
JMP 0x000f05be
CMP EDX,0x1
JNZ 0x000f0025
MOV dword ptr [ESP + 0x14],0x0
JMP 0x000f00c1
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x14],0x0
TEST EAX,EAX
JZ 0x000f00a7
MOV EAX,dword ptr [ESP + 0x1c]
SUB ESP,0xc
MOV EDX,0x33
MOV ECX,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x20],ECX
SUB ECX,0x1
MOV dword ptr [ESP + 0x20],ECX
MOV dword ptr [EAX + 0x38],ECX
MOV EAX,EBP
PUSH ECX
MOV ECX,dword ptr [ESP + 0x30]
CALL 0x00073150
MOV EAX,dword ptr [EDI + 0x4]
MOV ECX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [EAX + ESI*0x1 + 0x4]
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x000cb850
POP ECX
PUSH dword ptr [ESP + 0x20]
MOV EDX,0x33
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,EBP
CALL 0x00073150
ADD ESP,0x10
JMP 0x000f00a7
TEST ESI,ESI
JZ 0x000f0118
MOV EDX,ESI
CALL 0x00044090
JMP 0x000f0118
TEST BL,BL
JZ 0x000f0dab
MOV EAX,dword ptr [ESP + 0x1c]
MOV byte ptr [ESP + 0x41],0x4
MOV EBX,0x4
MOV dword ptr [ESP + 0x50],0x0
MOV EDI,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x64],0x0
LEA ESI,[EDI + -0x1]
MOV dword ptr [ESP + 0xc],EDI
MOV dword ptr [EAX + 0x38],ESI
MOV EAX,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x5c],0x0
TEST EAX,EAX
JNZ 0x000f117a
SUB ESP,0x8
MOV EDI,dword ptr [ESP + 0x34]
LEA EAX,[EDI + 0xfffa2e3a]
PUSH EAX
PUSH EBP
CALL 0x0007e150
POP EAX
POP EDX
PUSH dword ptr [ESP + 0xd0]
PUSH ESI
MOV EDX,0x1f
MOV EAX,EBP
MOV ECX,dword ptr [ESP + 0xd0]
CALL 0x00072f80
ADD ESP,0x10
CMP EBX,0x6
JA 0x000f05a2
MOV EAX,dword ptr [EDI + EBX*0x4 + 0xfffa65d0]
ADD EAX,EDI
JMP EAX
MOV EBX,0x2
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,EBX
CALL 0x00086c60
MOV dword ptr [ESP + 0x60],0x0
MOV EDX,ESI
MOV EAX,EBP
CALL 0x0006dec0
MOV EBX,dword ptr [ESP + 0x5c]
TEST EBX,EBX
JNZ 0x000f1322
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x74],0x0
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JZ 0x000f0b10
MOV ESI,EDI
MOV byte ptr [ESP + 0x4c],0x0
MOV EDI,EBP
MOV dword ptr [ESP + 0x68],0x0
MOV dword ptr [ESP + 0x20],0x0
JMP 0x000f0618
MOV ESI,dword ptr [ESI + 0x14]
ADD dword ptr [ESP + 0x20],0x1
TEST ESI,ESI
JZ 0x000f0ab0
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [EAX + ECX*0x4]
TEST ECX,ECX
JZ 0x000f0608
CMP ESI,dword ptr [ESP + 0x34]
JZ 0x000f0d10
MOV EAX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0xc],EBX
SUB EBX,0x1
CMP byte ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x38],EBX
MOV dword ptr [EAX + 0x38],EBX
JNZ 0x000f0659
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x000f0d78
SUB ESP,0x4
PUSH dword ptr [ESI]
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e6c]
PUSH EAX
PUSH EDI
CALL 0x0007e150
MOV EBP,dword ptr [ESI + 0x24]
ADD ESP,0x10
TEST EBP,EBP
JZ 0x000f06e2
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x49
MOV EAX,dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x2c]
PUSH dword ptr [EAX + EBX*0x4]
MOV EAX,EDI
CALL 0x00073150
MOV EAX,dword ptr [ESP + 0xd8]
MOV ECX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
NOT EAX
MOV EBX,dword ptr [ECX]
MOV dword ptr [ECX + 0x34],EAX
MOV EDX,dword ptr [ESI + 0x24]
TEST EDX,EDX
JZ 0x000f0df0
XOR ECX,ECX
MOV EAX,EBX
CALL 0x0005e9a0
CMP byte ptr [EBX + 0x4d],0x0
MOV EBP,EAX
JZ 0x000f0e18
TEST EBP,EBP
JZ 0x000f06d7
MOV EDX,EBP
MOV EAX,EBX
CALL 0x00063d60
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX + 0x34],0x0
MOV EAX,dword ptr [ESP + 0x30]
MOV EBX,dword ptr [ESP + 0x20]
CMP word ptr [ESI + 0x34],0x0
MOV EDX,dword ptr [EAX + EBX*0x4]
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x14],EAX
JZ 0x000f10f0
MOV EAX,dword ptr [ESP + 0x2c]
XOR EBP,EBP
MOV dword ptr [ESP + 0xc],ESI
LEA EBX,[EAX + 0xfffa1d30]
LEA EAX,[EAX + 0xfffa06f9]
MOV dword ptr [ESP + 0x24],EBX
MOV dword ptr [ESP + 0x28],EAX
JMP 0x000f07c8
MOV ESI,dword ptr [ESP + 0x18]
CMP BX,word ptr [ESI + 0x28]
JZ 0x000f0736
LEA ECX,[ECX + EBX*0x1 + 0x1]
MOV EAX,EBX
MOV EDX,EBX
MOV ESI,dword ptr [EDI + 0x68]
SAR EAX,0x1f
SAR EDX,0x1f
NOT EAX
NOT EDX
ADD EAX,0x50
ADD EDX,0x50
CMP ESI,dword ptr [EDI + 0x6c]
JGE 0x000f080d
LEA EDX,[ESI + 0x1]
LEA ESI,[ESI + ESI*0x2]
MOV dword ptr [EDI + 0x68],EDX
MOV EDX,dword ptr [EDI + 0x64]
LEA EDX,[EDX + ESI*0x8]
XOR ESI,ESI
MOV byte ptr [EDX],AL
MOV EAX,dword ptr [ESP + 0x10]
MOV word ptr [EDX + 0x2],SI
MOV dword ptr [EDX + 0x4],ECX
MOV dword ptr [EDX + 0x8],EAX
MOV dword ptr [EDX + 0xc],0x0
MOV dword ptr [EDX + 0x10],0x0
MOV byte ptr [EDX + 0x1],0x0
MOV dword ptr [EDX + 0x14],0x0
MOV EAX,dword ptr [ESP + 0x24]
TEST EBX,EBX
JS 0x000f07a4
MOV EAX,dword ptr [ESP + 0x18]
SHL EBX,0x4
ADD EBX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBX]
SUB ESP,0x4
ADD EBP,0x1
PUSH EAX
PUSH dword ptr [ESP + 0x30]
PUSH EDI
CALL 0x0007e240
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EAX,word ptr [EAX + 0x34]
CMP EAX,EBP
JLE 0x000f0926
MOV EAX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + 0x4]
LEA ECX,[ESI + EBP*0x1]
MOV dword ptr [ESP + 0x10],ECX
MOVSX EBX,word ptr [EAX + EBP*0x2]
CMP EBX,-0x2
JZ 0x000f08a0
MOV ECX,dword ptr [ESP + 0xc8]
CMP EBX,-0x1
JNZ 0x000f0728
MOV EAX,0x50
MOV EDX,0x50
MOV ESI,dword ptr [EDI + 0x68]
CMP ESI,dword ptr [EDI + 0x6c]
JL 0x000f0756
SUB ESP,0x8
MOV EAX,EDI
PUSH 0x0
PUSH dword ptr [ESP + 0x1c]
CALL 0x00072e30
ADD ESP,0x10
JMP 0x000f0790
MOV EAX,dword ptr [ESP + 0xcc]
TEST EAX,EAX
JNZ 0x000f116d
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e3a]
PUSH EAX
PUSH EBP
CALL 0x0007e150
POP EAX
POP EDX
PUSH dword ptr [ESP + 0xd0]
PUSH ESI
MOV EDX,0x1f
MOV EAX,EBP
MOV ECX,dword ptr [ESP + 0xd0]
CALL 0x00072f80
ADD ESP,0x10
MOV dword ptr [ESP + 0x5c],0x0
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBP
PUSH dword ptr [ESP + 0xe4]
CALL 0x00073150
ADD ESP,0x10
MOV dword ptr [ESP + 0x60],0x0
JMP 0x000f05be
MOV EAX,dword ptr [ESP + 0xc8]
MOV ECX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0xc]
NOT EAX
MOV ESI,dword ptr [ECX]
MOV dword ptr [ECX + 0x34],EAX
LEA EAX,[EBP + EBP*0x4]
SHL EAX,0x2
ADD EAX,dword ptr [EBX + 0x28]
MOV EDX,dword ptr [EAX + 0x4]
TEST EDX,EDX
JZ 0x000f0be0
XOR ECX,ECX
MOV EAX,ESI
CALL 0x0005e9a0
CMP byte ptr [ESI + 0x4d],0x0
MOV EBX,EAX
JZ 0x000f0c00
TEST EBX,EBX
JZ 0x000f08ed
MOV EDX,EBX
MOV EAX,ESI
CALL 0x00063d60
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX + 0x34],0x0
PUSH EBP
MOV EAX,dword ptr [ESP + 0x10]
ADD EBP,0x1
PUSH dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e84]
PUSH EAX
PUSH EDI
CALL 0x0007e240
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EAX,word ptr [EAX + 0x34]
CMP EAX,EBP
JG 0x000f07c8
MOV EBX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EBX + ECX*0x4]
SUB ESP,0x8
PUSH EDX
MOV EDX,0x66
PUSH EAX
MOV ECX,dword ptr [ESP + 0x24]
MOV EAX,EDI
CALL 0x00072f80
ADD ESP,0xc
PUSH dword ptr [ESI]
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e7d]
PUSH EAX
PUSH EDI
CALL 0x0007e240
ADD ESP,0x10
CMP dword ptr [ESP + 0x3c],ESI
SETZ byte ptr [ESP + 0x10]
CMP byte ptr [ESP + 0x43],0x0
MOVZX ECX,byte ptr [ESP + 0x10]
SETZ AL
TEST byte ptr [ESP + 0x42],AL
JZ 0x000f0987
TEST CL,CL
JNZ 0x000f0c18
MOVZX EBP,byte ptr [ESI + 0x36]
TEST EBP,EBP
JZ 0x000f0c18
MOVZX EAX,byte ptr [ESP + 0x41]
CMP AL,0xb
JZ 0x000f0c48
MOVZX EBP,AL
CMP ESI,dword ptr [ESP + 0x34]
JZ 0x000f0c5d
CMP EBP,0x5
SETZ BL
OR BL,byte ptr [ESP + 0x42]
MOV ECX,dword ptr [ESP + 0x20]
MOVZX EAX,word ptr [ESI + 0x32]
SUB ESP,0x4
MOV EDX,0x1b
ADD ECX,dword ptr [ESP + 0xc8]
MOV dword ptr [ESP + 0x28],ECX
PUSH EAX
MOV EAX,EDI
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x44]
CALL 0x00072fe0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0xc],EAX
CMP dword ptr [ESP + 0x3c],ESI
JZ 0x000f0a04
MOV EDX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00045e40
MOV dword ptr [ESP + 0xc],EAX
TEST BL,BL
JZ 0x000f0a30
MOV EAX,dword ptr [ESP + 0x18]
TEST byte ptr [EAX + 0x24],0x20
JZ 0x000f0e58
CMP dword ptr [ESP + 0x3c],ESI
JNZ 0x000f0f08
MOV EBX,dword ptr [ESP + 0xcc]
TEST EBX,EBX
JNZ 0x000f0fe5
NOP
CMP EBP,0x4
JZ 0x000f0b65
JG 0x000f0b40
TEST EBP,EBP
JLE 0x000f0c80
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,ESI
MOV EDX,EBP
CALL 0x00097090
CMP ESI,dword ptr [ESP + 0x34]
JZ 0x000f0b8a
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,EDI
CALL 0x0006dec0
MOV EBX,dword ptr [ESP + 0x14]
CMP dword ptr [ESP + 0xc],EBX
JZ 0x000f0608
CMP dword ptr [ESP + 0x44],0x1
JZ 0x000f1100
MOV EAX,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x44]
CMP EBX,dword ptr [EAX + 0x1c]
JLE 0x000f0608
MOV dword ptr [EAX + 0x1c],EBX
MOV EBX,dword ptr [ESP + 0xc]
ADD dword ptr [ESP + 0x20],0x1
MOV dword ptr [EAX + 0x20],EBX
MOV ESI,dword ptr [ESI + 0x14]
TEST ESI,ESI
JNZ 0x000f0618
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x5c]
MOV EBP,EDI
TEST ECX,ECX
JZ 0x000f0b10
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBP
PUSH dword ptr [ESP + 0x68]
CALL 0x00073150
POP EAX
POP EDX
MOV EDI,dword ptr [ESP + 0x34]
LEA EAX,[EDI + 0xfffa2e91]
PUSH EAX
PUSH EBP
CALL 0x0007e240
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x74]
MOV EAX,dword ptr [EBP + 0x68]
MOV ECX,dword ptr [EBP]
TEST ESI,ESI
LEA EDX,[EAX + -0x1]
CMOVNS EDX,ESI
CMP byte ptr [ECX + 0x4d],0x0
MOV ESI,EDX
LEA EDX,[EDI + 0x1b94]
JZ 0x000f115c
MOV dword ptr [EDX + 0x8],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x70]
MOV EDI,dword ptr [ESP + 0x60]
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [ESP + 0x9c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x000f1394
ADD ESP,0xac
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EBP,0x6
JNZ 0x000f0c80
SUB ESP,0x8
PUSH dword ptr [ESP + 0x2c]
PUSH ESI
MOV ECX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x000f3260
ADD ESP,0x10
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EDI
PUSH dword ptr [ESP + 0xe4]
CALL 0x00073150
ADD ESP,0x10
CMP ESI,dword ptr [ESP + 0x34]
JNZ 0x000f0a5e
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,dword ptr [ESP + 0x70]
ADD EAX,0x1
PUSH EAX
MOV EAX,EDI
CALL 0x00073150
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x68]
MOV EDX,dword ptr [EDI + 0x68]
MOV EBX,dword ptr [EDI]
TEST ECX,ECX
LEA EAX,[EDX + -0x1]
CMOVNS EAX,ECX
MOV ECX,dword ptr [ESP + 0x2c]
CMP byte ptr [EBX + 0x4d],0x0
LEA ECX,[ECX + 0x1b94]
JNZ 0x000f0bd0
LEA ECX,[EAX + EAX*0x2]
MOV EAX,dword ptr [EDI + 0x64]
LEA ECX,[EAX + ECX*0x8]
MOV dword ptr [ECX + 0x8],EDX
JMP 0x000f0a69
CMP byte ptr [ESI + 0x4d],0x0
JNZ 0x000f08ed
MOV EAX,ECX
MOV ECX,dword ptr [ESP + 0x10]
XOR EDX,EDX
CALL 0x000cb850
JMP 0x000f08ed
MOV EDX,EAX
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x000cb850
JMP 0x000f08e0
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,EDI
CALL 0x0006dec0
JMP 0x000f0608
CMP byte ptr [ESP + 0x43],0x0
JNZ 0x000f0295
XOR EAX,EAX
JMP 0x000f0235
CMP EBP,0xb
MOV EAX,0x2
CMOVZ EBP,EAX
CMP ESI,dword ptr [ESP + 0x34]
JNZ 0x000f09ad
MOV EAX,dword ptr [ESP + 0x50]
MOVZX EBX,byte ptr [ESP + 0x42]
CMP dword ptr [EAX + 0x8],0x1
SBB EBP,EBP
AND EBP,0xfffffffe
ADD EBP,0x6
JMP 0x000f09b7
MOV EAX,dword ptr [ESP + 0x48]
TEST byte ptr [EAX + 0x1d],0x20
JZ 0x000f0ec8
SUB ESP,0x8
MOV ECX,0x75
PUSH 0x0
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x00049a60
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x000f0ec8
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [EAX + 0x74]
TEST EDX,EDX
CMOVZ EDX,EAX
MOV byte ptr [EDX + 0x14],0x1
PUSH dword ptr [ESP + 0x24]
MOVZX EDX,byte ptr [ESP + 0x14]
PUSH EDX
PUSH 0x5
PUSH 0x0
MOVSX EAX,word ptr [ESP + 0x54]
PUSH EAX
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0xdc]
PUSH dword ptr [ESP + 0xdc]
MOV EDX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x3c]
CALL 0x000efa90
ADD ESP,0x20
MOV dword ptr [ESP + 0x60],0x1
JMP 0x000f0a54
MOV EBX,dword ptr [ESP + 0x64]
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
LEA EAX,[EBX + 0x1]
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,EDI
PUSH 0x0
CALL 0x00073150
MOV dword ptr [ESP + 0x78],EAX
POP EAX
POP EDX
MOV EBP,dword ptr [ESP + 0x34]
LEA EAX,[EBP + 0xfffa2e55]
PUSH EAX
PUSH EDI
CALL 0x0007e240
MOV EDX,dword ptr [EDI + 0x68]
ADD ESP,0x10
TEST EBX,EBX
LEA ECX,[EBP + 0x1b94]
LEA EAX,[EDX + -0x1]
CMOVNS EAX,EBX
MOV EBX,dword ptr [EDI]
CMP byte ptr [EBX + 0x4d],0x0
JNZ 0x000f0d6a
LEA ECX,[EAX + EAX*0x2]
MOV EAX,dword ptr [EDI + 0x64]
LEA ECX,[EAX + ECX*0x8]
CMP byte ptr [ESP + 0x4c],0x0
MOV dword ptr [ECX + 0x8],EDX
JNZ 0x000f0659
MOV EAX,dword ptr [ESP + 0xc8]
MOV EDX,dword ptr [ESP + 0x18]
LEA ECX,[EAX + 0x1]
MOV EAX,EDI
CALL 0x00073230
MOV byte ptr [ESP + 0x4c],0x1
JMP 0x000f0659
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
JMP 0x000f0266
MOV dword ptr [ESP + 0x50],0x0
MOV dword ptr [ESP + 0x64],0x0
MOV byte ptr [ESP + 0x41],0x4
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x74],0x0
MOV dword ptr [ESP + 0x5c],0x0
MOV EDI,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x60],0x0
TEST EDI,EDI
JNZ 0x000f05ea
JMP 0x000f0b10
CMP byte ptr [EBX + 0x4d],0x0
JNZ 0x000f06d7
PUSH 0x10
PUSH dword ptr [ESP + 0x3c]
PUSH 0x0
PUSH dword ptr [ESP + 0x28]
CALL 0x000c9bf0
ADD ESP,0x10
JMP 0x000f06d7
PUSH 0x10
PUSH dword ptr [ESP + 0x3c]
PUSH EAX
PUSH dword ptr [ESP + 0x28]
CALL 0x000c9bf0
ADD ESP,0x10
JMP 0x000f06ca
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
PUSH dword ptr [ESP + 0xe4]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00073150
ADD ESP,0x10
JMP 0x000f028a
SUB ESP,0xc
MOV EDX,0x87
MOV EAX,EDI
PUSH dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x34]
CALL 0x00073150
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0xcc]
TEST EBX,EBX
JZ 0x000f0a30
SUB ESP,0x8
MOV EDX,0x35
MOV EAX,EDI
PUSH dword ptr [ESP + 0xd4]
PUSH dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x1c]
CALL 0x00072f80
MOV EAX,dword ptr [EDI + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x000f0a30
MOV EDX,dword ptr [EDI + 0x64]
LEA EAX,[EAX + EAX*0x2]
MOV ECX,0x90
LEA EAX,[EDX + EAX*0x8]
MOV word ptr [EAX + -0x16],CX
JMP 0x000f0a30
MOV EAX,dword ptr [ESP + 0x1c]
XOR ECX,ECX
MOV EAX,dword ptr [EAX]
TEST byte ptr [EAX + 0x1d],0x40
JZ 0x000f0cc4
MOV EBX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EBX + 0x48]
MOV EDX,dword ptr [EBX]
MOV dword ptr [ESP + 0x28],EAX
ADD EAX,0x38
CALL 0x00049430
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x000f11bd
XOR ECX,ECX
JMP 0x000f0cb4
MOV EAX,dword ptr [ESP + 0x3c]
CMP word ptr [EAX + 0x32],0x0
JZ 0x000f0a20
MOV ECX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x6c],EBP
XOR EBX,EBX
MOV dword ptr [ESP + 0x54],EDI
MOV EDI,ESI
MOV ESI,EAX
LEA ECX,[ECX + 0xfffa2dee]
MOV dword ptr [ESP + 0x58],ECX
LEA ESI,[ESI]
NOP
LEA EAX,[EBX + EBX*0x1]
MOVZX EDX,word ptr [EDI + 0x34]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x4]
MOVZX ECX,word ptr [EAX + EBX*0x2]
TEST EDX,EDX
JZ 0x000f0f72
MOV EBP,dword ptr [EDI + 0x4]
XOR EAX,EAX
CMP CX,word ptr [EBP]
JNZ 0x000f0f6b
JMP 0x000f0f77
CMP CX,word ptr [EBP + EAX*0x2]
JZ 0x000f10e0
ADD EAX,0x1
CMP EDX,EAX
JNZ 0x000f0f60
MOV EAX,0xffffffff
SUB ESP,0x8
MOV ECX,dword ptr [ESP + 0x14]
LEA EDX,[ECX + EBX*0x1]
ADD EBX,0x1
PUSH EDX
MOV EDX,0x5a
PUSH EAX
MOV EBP,dword ptr [ESP + 0x64]
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,EBP
CALL 0x00072f80
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESI + 0x4]
MOVSX EAX,word ptr [EAX + ECX*0x1]
MOV ECX,dword ptr [ESP + 0x28]
SHL EAX,0x4
ADD EAX,dword ptr [ECX + 0x4]
PUSH dword ptr [EAX]
PUSH dword ptr [ECX]
PUSH dword ptr [ESP + 0x70]
PUSH EBP
CALL 0x0007e240
MOVZX EAX,word ptr [ESI + 0x32]
ADD ESP,0x20
CMP EAX,EBX
JG 0x000f0f38
MOV EBX,dword ptr [ESP + 0xcc]
MOV ESI,EDI
MOV EBP,dword ptr [ESP + 0x6c]
MOV EDI,dword ptr [ESP + 0x54]
TEST EBX,EBX
JZ 0x000f0a30
MOV ECX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [EDI + 0x68]
MOVZX EDX,word ptr [ECX + 0x32]
ADD EAX,EDX
MOV dword ptr [ESP + 0x54],EAX
MOVZX EAX,byte ptr [ESI + 0x37]
AND EAX,0x3
CMP AL,0x2
MOV EAX,dword ptr [ESP + 0xc]
CMOVZ EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x58],EAX
TEST EDX,EDX
JZ 0x000f0a30
MOV EBX,dword ptr [ESP + 0xcc]
MOV dword ptr [ESP + 0x28],0x34
MOV dword ptr [ESP + 0x78],EBP
MOV EBP,dword ptr [ESP + 0x54]
ADD EBX,0x1
MOV dword ptr [ESP + 0x7c],ESI
MOV ESI,ECX
MOV dword ptr [ESP + 0x6c],EBX
XOR EBX,EBX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x20]
MOV EDX,dword ptr [EAX + EBX*0x4]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x0008c270
MOV EDX,0x35
MOV dword ptr [ESP + 0x54],EAX
MOV EAX,dword ptr [ESI + 0x4]
MOVSX ECX,word ptr [EAX + EBX*0x2]
MOVZX EAX,word ptr [ESI + 0x32]
SUB EAX,0x1
CMP EAX,EBX
CMOVNZ EDX,dword ptr [ESP + 0x28]
CMOVZ EBP,dword ptr [ESP + 0x38]
SUB ESP,0x8
ADD ECX,dword ptr [ESP + 0x74]
MOV dword ptr [ESP + 0x30],EDX
MOV EAX,dword ptr [ESP + 0x60]
ADD EAX,EBX
PUSH EAX
MOV EAX,EDI
PUSH EBP
CALL 0x00072f80
MOV ECX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP],0xfffffffe
MOV EDX,EAX
MOV EAX,EDI
CALL 0x00062750
MOV EAX,dword ptr [EDI + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x000f1148
MOV EDX,dword ptr [EDI + 0x64]
LEA EAX,[EAX + EAX*0x2]
MOV ECX,0x90
ADD EBX,0x1
LEA EAX,[EDX + EAX*0x8]
MOV word ptr [EAX + -0x16],CX
MOVZX EAX,word ptr [ESI + 0x32]
CMP EAX,EBX
JG 0x000f1040
MOV EBP,dword ptr [ESP + 0x78]
MOV ESI,dword ptr [ESP + 0x7c]
JMP 0x000f0a30
CWDE
JMP 0x000f0f77
XOR EAX,EAX
JMP 0x000f0935
MOV EBX,dword ptr [ESP + 0xc]
TEST EBX,EBX
JZ 0x000f0608
MOV ECX,dword ptr [ESP + 0x1c]
MOVZX EAX,byte ptr [ECX + 0x13]
CMP AL,0x7
JA 0x000f0608
LEA EDX,[EAX + 0x1]
MOV byte ptr [ECX + 0x13],DL
MOV dword ptr [ECX + EAX*0x4 + 0x90],EBX
JMP 0x000f0608
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x64],0x0
JMP 0x000f0322
MOVZX EAX,word ptr [ESI + 0x32]
ADD EBX,0x1
CMP EAX,EBX
JG 0x000f1040
JMP 0x000f10cf
MOV EDX,dword ptr [EBP + 0x64]
LEA ECX,[ESI + ESI*0x2]
LEA EDX,[EDX + ECX*0x8]
MOV dword ptr [EDX + 0x8],EAX
JMP 0x000f0b10
MOV dword ptr [ESP + 0x5c],0x0
MOV EBX,0x4
SUB ESP,0x8
MOV EDX,0x35
MOV EAX,EBP
PUSH dword ptr [ESP + 0xd4]
PUSH ESI
MOV ECX,dword ptr [ESP + 0xd8]
CALL 0x00072f80
MOV EAX,dword ptr [EBP + 0x68]
ADD ESP,0x10
TEST EAX,EAX
JLE 0x000f055e
MOV ECX,dword ptr [EBP + 0x64]
LEA EAX,[EAX + EAX*0x2]
MOV EDI,0x90
LEA EAX,[ECX + EAX*0x8]
MOV word ptr [EAX + -0x16],DI
JMP 0x000f055e
MOV EBX,dword ptr [EBX + 0x10]
TEST EBX,EBX
JNZ 0x000f0cb4
JMP 0x000f0cc4
MOV EAX,dword ptr [ESP + 0x50]
MOV EBX,dword ptr [EAX + 0x8]
TEST EBX,EBX
JZ 0x000f0825
MOV ECX,dword ptr [ESP + 0xcc]
TEST ECX,ECX
JNZ 0x000f1382
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffa2e3a]
PUSH EAX
PUSH EBP
CALL 0x0007e150
POP EBX
POP EDI
PUSH dword ptr [ESP + 0xd0]
PUSH ESI
MOV EDX,0x1f
MOV EAX,EBP
MOV ECX,dword ptr [ESP + 0xd0]
CALL 0x00072f80
ADD ESP,0x10
MOV dword ptr [ESP + 0x5c],0x0
SUB ESP,0x8
PUSH dword ptr [ESP + 0xc8]
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x000f3260
ADD ESP,0x10
JMP 0x000f0870
SUB ESP,0xc
XOR ECX,ECX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX]
CALL 0x0004ed00
ADD ESP,0x10
XOR ECX,ECX
TEST EAX,EAX
JNZ 0x000f0427
SUB ESP,0xc
MOV EDX,0x7b
MOV EAX,EBP
PUSH 0x40
MOV ECX,dword ptr [ESP + 0xd0]
CALL 0x00073150
MOV EDI,dword ptr [ESP + 0x28]
MOV ECX,0xfffffffa
MOV EAX,EBP
MOV EDX,EDI
CALL 0x000626c0
MOV EDX,EDI
MOV EDI,dword ptr [EDI + 0x8]
ADD ESP,0x10
MOV dword ptr [ESP + 0x60],0x1
TEST EDI,EDI
JZ 0x000f05be
MOV EDI,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EDI + 0x74]
TEST EAX,EAX
CMOVZ EAX,EDI
SUB ESP,0x4
MOV byte ptr [EAX + 0x14],0x1
MOV EAX,EDI
PUSH -0x1
PUSH 0x0
PUSH dword ptr [ESP + 0xd0]
MOV ECX,dword ptr [ESP + 0xd0]
CALL 0x000d1920
ADD ESP,0x10
MOV dword ptr [ESP + 0x60],0x1
JMP 0x000f05be
MOV EAX,dword ptr [ESP + 0x18]
MOVZX EBX,byte ptr [EAX + 0x30]
CMP EBX,0xb
JNZ 0x000f034a
MOV EDX,dword ptr [ESP + 0x50]
TEST EDX,EDX
JZ 0x000f1318
MOV EAX,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JZ 0x000f11cd
MOV EBX,0x2
JMP 0x000f0547
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0xb
MOV EAX,EBP
PUSH 0x0
CALL 0x00073150
MOV EBX,dword ptr [EBP + 0x68]
MOV ECX,dword ptr [EBP]
MOV dword ptr [ESP + 0x84],EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x5c]
LEA EDX,[EBX + -0x1]
MOV EDI,dword ptr [ESP + 0x2c]
SUB EAX,0x1
CMOVS EAX,EDX
CMP byte ptr [ECX + 0x4d],0x0
LEA EDX,[EDI + 0x1b94]
JNZ 0x000f136b
LEA EDX,[EAX + EAX*0x2]
MOV EAX,dword ptr [EBP + 0x64]
LEA EDX,[EAX + EDX*0x8]
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EDX + 0x8],EBX
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JNZ 0x000f05ea
JMP 0x000f0aba
MOV EBX,0x6
MOV dword ptr [ESP + 0x5c],0x0
JMP 0x000f117a
CALL 0x00153870
(translation_unit "void FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return;\n}\n\n" (function_definition "void FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)" identifier (parameter_list "(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "char param_5" primitive_type identifier) , (parameter_declaration "byte param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int *param_10" primitive_type (pointer_declarator "*param_10" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "undefined8 uVar24;" type_identifier identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "undefined4 *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "byte local_7b;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "int *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_3c [5];" primitive_type (array_declarator "local_3c [5]" identifier [ number_literal ]) ;) (declaration "byte local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar24 = FUN_0003a401();" (assignment_expression "uVar24 = FUN_0003a401()" identifier = (call_expression "FUN_0003a401()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar16 = (int *)((ulonglong)uVar24 >> 0x20);" (assignment_expression "piVar16 = (int *)((ulonglong)uVar24 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar24 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar24 >> 0x20)" ( (binary_expression "(ulonglong)uVar24 >> 0x20" (cast_expression "(ulonglong)uVar24" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar10 = (int *)uVar24;" (assignment_expression "piVar10 = (int *)uVar24" identifier = (cast_expression "(int *)uVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar11 = (int *)piVar10[2];" (assignment_expression "piVar11 = (int *)piVar10[2]" identifier = (cast_expression "(int *)piVar10[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = param_10;" (assignment_expression "local_6c = param_10" identifier = identifier) ;) (expression_statement "local_7b = param_6;" (assignment_expression "local_7b = param_6" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *piVar10;" (assignment_expression "iVar4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "bVar23 = param_4 != 0;" (assignment_expression "bVar23 = param_4 != 0" identifier = (binary_expression "param_4 != 0" identifier != number_literal)) ;) (if_statement "if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar11 = (int *)FUN_00073350();\n  }" { (expression_statement "piVar11 = (int *)FUN_00073350();" (assignment_expression "piVar11 = (int *)FUN_00073350()" identifier = (cast_expression "(int *)FUN_00073350()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00073350()" identifier (argument_list "()" ( ))))) ;) })) (expression_statement "iVar21 = (int)*(short *)((int)piVar16 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar16 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar16 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar16 + 0x2a)" * (cast_expression "(short *)((int)piVar16 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 0x2a)" ( (binary_expression "(int)piVar16 + 0x2a" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (if_statement "if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" if (parenthesized_expression "((*(byte *)(piVar16 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar16 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar16 + 9) & 0x20)" ( (binary_expression "*(byte *)(piVar16 + 9) & 0x20" (pointer_expression "*(byte *)(piVar16 + 9)" * (cast_expression "(byte *)(piVar16 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16 + 9)" ( (binary_expression "piVar16 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }" { (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" identifier = number_literal) ;) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;) (expression_statement "local_80 = (undefined4 *)0x0;" (assignment_expression "local_80 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" else (compound_statement "{\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" { (expression_statement "local_80 = (undefined4 *)piVar16[2];" (assignment_expression "local_80 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (if_statement "if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }" if (parenthesized_expression "(local_80 == (undefined4 *)0x0)" ( (binary_expression "local_80 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nFUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }" { (labeled_statement "FUN_000157a6:\n                    /* WARNING: Does not return */\n      pcVar5 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "bVar2 = *(byte *)((int)local_80 + 0x37);" (assignment_expression "bVar2 = *(byte *)((int)local_80 + 0x37)" identifier = (pointer_expression "*(byte *)((int)local_80 + 0x37)" * (cast_expression "(byte *)((int)local_80 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x37)" ( (binary_expression "(int)local_80 + 0x37" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }" while (parenthesized_expression "((bVar2 & 3) != 2)" ( (binary_expression "(bVar2 & 3) != 2" (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }" { (expression_statement "local_80 = (undefined4 *)local_80[5];" (assignment_expression "local_80 = (undefined4 *)local_80[5]" identifier = (cast_expression "(undefined4 *)local_80[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[5]" identifier [ number_literal ]))) ;) (if_statement "if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;" if (parenthesized_expression "(local_80 == (undefined4 *)0x0)" ( (binary_expression "local_80 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto FUN_000157a6;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte *)((int)local_80 + 0x37);" (assignment_expression "bVar2 = *(byte *)((int)local_80 + 0x37)" identifier = (pointer_expression "*(byte *)((int)local_80 + 0x37)" * (cast_expression "(byte *)((int)local_80 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x37)" ( (binary_expression "(int)local_80 + 0x37" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" identifier = number_literal) ;) (expression_statement "local_78 = (uint)*(ushort *)((int)local_80 + 0x32);" (assignment_expression "local_78 = (uint)*(ushort *)((int)local_80 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)((int)local_80 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }" if (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) (compound_statement "{\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }" { (do_statement "do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);" do (compound_statement "{\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    }" { (while_statement "while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }" while (parenthesized_expression "(((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))))" ( (parenthesized_expression "((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))" ( (binary_expression "(short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))" (binary_expression "(short)piVar16[10] == iVar18" (cast_expression "(short)piVar16[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar16[10]" identifier [ number_literal ])) == identifier) || (parenthesized_expression "((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))" ( (parenthesized_expression "(param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))" ( (binary_expression "param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)" (binary_expression "param_9 != 0" identifier != number_literal) && (parenthesized_expression "(*(int *)(param_9 + iVar18 * 4) < 0)" ( (binary_expression "*(int *)(param_9 + iVar18 * 4) < 0" (pointer_expression "*(int *)(param_9 + iVar18 * 4)" * (cast_expression "(int *)(param_9 + iVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + iVar18 * 4)" ( (binary_expression "param_9 + iVar18 * 4" identifier + (binary_expression "iVar18 * 4" identifier * number_literal)) )))) < number_literal) ))) )) ))) )) )) (compound_statement "{\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }" { (labeled_statement "LAB_000f0048:\n        iVar18 = iVar18 + 1;" statement_identifier : (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar21 == iVar18) goto LAB_000f0158;" if (parenthesized_expression "(iVar21 == iVar18)" ( (binary_expression "iVar21 == iVar18" identifier == identifier) )) (goto_statement "goto LAB_000f0158;" goto statement_identifier ;)) })) (expression_statement "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);" (assignment_expression "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10)" identifier = (cast_expression "(undefined4 *)(piVar16[1] + iVar18 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[1] + iVar18 * 0x10)" ( (binary_expression "piVar16[1] + iVar18 * 0x10" (subscript_expression "piVar16[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x10" identifier * number_literal)) )))) ;) (expression_statement "bVar7 = *(byte *)(puVar12 + 3);" (assignment_expression "bVar7 = *(byte *)(puVar12 + 3)" identifier = (pointer_expression "*(byte *)(puVar12 + 3)" * (cast_expression "(byte *)(puVar12 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 3)" ( (binary_expression "puVar12 + 3" identifier + number_literal) ))))) ;) (if_statement "if (bVar7 == 0) goto LAB_000f0048;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;)) (expression_statement "bVar8 = param_6;" (assignment_expression "bVar8 = param_6" identifier = identifier) ;) (if_statement "if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" if (parenthesized_expression "((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb))" ( (binary_expression "(param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)" (parenthesized_expression "(param_6 == 0xb)" ( (binary_expression "param_6 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar8 = bVar7, bVar7 == 0xb)" ( (comma_expression "bVar8 = bVar7, bVar7 == 0xb" (assignment_expression "bVar8 = bVar7" identifier = identifier) , (binary_expression "bVar7 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }" { (labeled_statement "LAB_000f009f:\n        local_a8 = 0;" statement_identifier : (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_000f00a7:\n        bVar8 = 2;" statement_identifier : (expression_statement "bVar8 = 2;" (assignment_expression "bVar8 = 2" identifier = number_literal) ;)) (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar15 = piVar10;\n        }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)((int)piVar15 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar15 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar15 + 0x15)" * (cast_expression "(undefined1 *)((int)piVar15 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 0x15)" ( (binary_expression "(int)piVar15 + 0x15" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);" (assignment_expression "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10)" identifier = (cast_expression "(undefined4 *)(piVar16[1] + iVar18 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[1] + iVar18 * 0x10)" ( (binary_expression "piVar16[1] + iVar18 * 0x10" (subscript_expression "piVar16[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x10" identifier * number_literal)) )))) ;) }) (else_clause "else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" else (compound_statement "{\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" { (if_statement "if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }" if (parenthesized_expression "(bVar8 == 5)" ( (binary_expression "bVar8 == 5" identifier == number_literal) )) (compound_statement "{\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }" { (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (if_statement "if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }" if (parenthesized_expression "(puVar12[1] != 0)" ( (binary_expression "puVar12[1] != 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }" { (labeled_statement "LAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;" statement_identifier : (expression_statement "local_a8 = piVar10[0xe] + -1;" (assignment_expression "local_a8 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;)) (expression_statement "piVar10[0xe] = local_a8;" (assignment_expression "piVar10[0xe] = local_a8" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00073150(local_a8);" (call_expression "FUN_00073150(local_a8)" identifier (argument_list "(local_a8)" ( identifier ))) ;) (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00073150(local_a8);" (call_expression "FUN_00073150(local_a8)" identifier (argument_list "(local_a8)" ( identifier ))) ;) })) (goto_statement "goto LAB_000f00a7;" goto statement_identifier ;) })) (if_statement "if (bVar8 == 2) goto LAB_000f009f;" if (parenthesized_expression "(bVar8 == 2)" ( (binary_expression "bVar8 == 2" identifier == number_literal) )) (goto_statement "goto LAB_000f009f;" goto statement_identifier ;)) (if_statement "if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" if (parenthesized_expression "(bVar8 < 3)" ( (binary_expression "bVar8 < 3" identifier < number_literal) )) (compound_statement "{\n          if (bVar8 != 1) goto LAB_000f0025;\n        }" { (if_statement "if (bVar8 != 1) goto LAB_000f0025;" if (parenthesized_expression "(bVar8 != 1)" ( (binary_expression "bVar8 != 1" identifier != number_literal) )) (goto_statement "goto LAB_000f0025;" goto statement_identifier ;)) }) (else_clause "else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" else (if_statement "if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" if (parenthesized_expression "(bVar8 != 3)" ( (binary_expression "bVar8 != 3" identifier != number_literal) )) (compound_statement "{\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" { (if_statement "if (bVar8 == 5) goto LAB_000f04a3;" if (parenthesized_expression "(bVar8 == 5)" ( (binary_expression "bVar8 == 5" identifier == number_literal) )) (goto_statement "goto LAB_000f04a3;" goto statement_identifier ;)) (labeled_statement "LAB_000f0025:\n          FUN_00073150(param_7);" statement_identifier : (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;)) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;) })))) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);" (assignment_expression "iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" identifier = (call_expression "FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" identifier (argument_list "(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" ( identifier , (binary_expression "unaff_EDI + 0x6dd5f" identifier + number_literal) , (pointer_expression "*piVar16" * identifier) , (pointer_expression "*puVar12" * identifier) )))) ;) (expression_statement "FUN_00072f80(bVar8,param_3 + 1 + iVar18);" (call_expression "FUN_00072f80(bVar8,param_3 + 1 + iVar18)" identifier (argument_list "(bVar8,param_3 + 1 + iVar18)" ( identifier , (binary_expression "param_3 + 1 + iVar18" (binary_expression "param_3 + 1" identifier + number_literal) + identifier) ))) ;) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }" { (expression_statement "iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;" (assignment_expression "iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18" identifier = (binary_expression "piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18" (binary_expression "piVar11[0x19] + -0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + number_literal) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar20 + 1) = 0xf9;" (assignment_expression "*(undefined1 *)(iVar20 + 1) = 0xf9" (pointer_expression "*(undefined1 *)(iVar20 + 1)" * (cast_expression "(undefined1 *)(iVar20 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar20 + 0x10) = iVar19;" (assignment_expression "*(int *)(iVar20 + 0x10) = iVar19" (pointer_expression "*(int *)(iVar20 + 0x10)" * (cast_expression "(int *)(iVar20 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x10)" ( (binary_expression "iVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (iVar19 != 0) {\n        FUN_00044090();\n      }" else (if_statement "if (iVar19 != 0) {\n        FUN_00044090();\n      }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_00044090();\n      }" { (expression_statement "FUN_00044090();" (call_expression "FUN_00044090()" identifier (argument_list "()" ( ))) ;) })))) (if_statement "if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }" if (parenthesized_expression "(0 < piVar11[0x1a])" ( (binary_expression "0 < piVar11[0x1a]" number_literal < (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }" { (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_a8 == 0) goto LAB_000f0048;" if (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar21 != iVar18)" ( (binary_expression "iVar21 != iVar18" identifier != identifier) )) ;) })) (labeled_statement "LAB_000f0158:\n  piVar15 = (int *)piVar16[6];" statement_identifier : (expression_statement "piVar15 = (int *)piVar16[6];" (assignment_expression "piVar15 = (int *)piVar16[6]" identifier = (cast_expression "(int *)piVar16[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[6]" identifier [ number_literal ]))) ;)) (if_statement "if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }" if (parenthesized_expression "((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0))" ( (binary_expression "(piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)" (parenthesized_expression "(piVar15 != (int *)0x0)" ( (binary_expression "piVar15 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 2)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 2" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }" { (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = (unary_expression "~param_3" ~ identifier)) ;) (expression_statement "bVar7 = 2;" (assignment_expression "bVar7 = 2" identifier = number_literal) ;) (if_statement "if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }" if (parenthesized_expression "(param_6 != 0xb)" ( (binary_expression "param_6 != 0xb" identifier != number_literal) )) (compound_statement "{\n      bVar7 = param_6;\n    }" { (expression_statement "bVar7 = param_6;" (assignment_expression "bVar7 = param_6" identifier = identifier) ;) })) (expression_statement "piVar22 = piVar15 + 1;" (assignment_expression "piVar22 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) (if_statement "if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }" if (parenthesized_expression "(0 < *piVar15)" ( (binary_expression "0 < *piVar15" number_literal < (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }" { (do_statement "do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);" do (compound_statement "{\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      }" { (expression_statement "iVar21 = *piVar22;" (assignment_expression "iVar21 = *piVar22" identifier = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" if (parenthesized_expression "(param_9 == 0)" ( (binary_expression "param_9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }" { (labeled_statement "LAB_000f023c:\n          iVar18 = piVar10[0xe];" statement_identifier : (expression_statement "iVar18 = piVar10[0xe];" (assignment_expression "iVar18 = piVar10[0xe]" identifier = (subscript_expression "piVar10[0xe]" identifier [ number_literal ])) ;)) (expression_statement "piVar10[0xe] = iVar18 + -1;" (assignment_expression "piVar10[0xe] = iVar18 + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);" (call_expression "FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10)" identifier (argument_list "(piVar10,iVar21,iVar18 + -1,0x10)" ( identifier , identifier , (binary_expression "iVar18 + -1" identifier + number_literal) , number_literal ))) ;) (if_statement "if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" if (parenthesized_expression "(bVar7 == 4)" ( (binary_expression "bVar7 == 4" identifier == number_literal) )) (compound_statement "{\n            FUN_00073150(param_7);\n          }" { (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;) }) (else_clause "else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" else (compound_statement "{\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" { (expression_statement "iVar21 = piVar22[1];" (assignment_expression "iVar21 = piVar22[1]" identifier = (subscript_expression "piVar22[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar21 = *piVar16;\n            }" { (expression_statement "iVar21 = *piVar16;" (assignment_expression "iVar21 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) })) (if_statement "if (bVar7 == 5) {\n              bVar7 = 2;\n            }" if (parenthesized_expression "(bVar7 == 5)" ( (binary_expression "bVar7 == 5" identifier == number_literal) )) (compound_statement "{\n              bVar7 = 2;\n            }" { (expression_statement "bVar7 = 2;" (assignment_expression "bVar7 = 2" identifier = number_literal) ;) })) (expression_statement "FUN_000744c0(iVar21,0,3);" (call_expression "FUN_000744c0(iVar21,0,3)" identifier (argument_list "(iVar21,0,3)" ( identifier , number_literal , number_literal ))) ;) }))) (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" else (compound_statement "{\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" { (do_statement "do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);" do (compound_statement "{\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          }" { (expression_statement "*(undefined4 *)((int)local_3c + uVar13) = 0;" (assignment_expression "*(undefined4 *)((int)local_3c + uVar13) = 0" (pointer_expression "*(undefined4 *)((int)local_3c + uVar13)" * (cast_expression "(undefined4 *)((int)local_3c + uVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + uVar13)" ( (binary_expression "(int)local_3c + uVar13" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar13 = uVar13 + 4;" (assignment_expression "uVar13 = uVar13 + 4" identifier = (binary_expression "uVar13 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 < 0x18)" ( (binary_expression "uVar13 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_3c[1] = unaff_EDI + -0xa9f97;" (assignment_expression "local_3c[1] = unaff_EDI + -0xa9f97" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0xa9f97" identifier + number_literal)) ;) (expression_statement "local_24 = param_9;" (assignment_expression "local_24 = param_9" identifier = identifier) ;) (if_statement "if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }" { (if_statement "if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }" if (parenthesized_expression "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }" { (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000f0235;" goto statement_identifier ;) })) }) (else_clause "else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" else (compound_statement "{\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" { (expression_statement "FUN_0005c830();" (call_expression "FUN_0005c830()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar8 = local_28;" (assignment_expression "bVar8 = local_28" identifier = identifier) ;) (if_statement "if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }" if (parenthesized_expression "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }" { (labeled_statement "LAB_000f0235:\n              bVar8 = bVar8 & 0xfd;" statement_identifier : (expression_statement "bVar8 = bVar8 & 0xfd;" (assignment_expression "bVar8 = bVar8 & 0xfd" identifier = (binary_expression "bVar8 & 0xfd" identifier & number_literal)) ;)) })) (if_statement "if (bVar8 != 0) goto LAB_000f023c;" if (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f023c;" goto statement_identifier ;)) }))) }))) (expression_statement "local_ac = local_ac + 1;" (assignment_expression "local_ac = local_ac + 1" identifier = (binary_expression "local_ac + 1" identifier + number_literal)) ;) (expression_statement "piVar22 = piVar22 + 5;" (assignment_expression "piVar22 = piVar22 + 5" identifier = (binary_expression "piVar22 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_ac < *piVar15)" ( (binary_expression "local_ac < *piVar15" identifier < (pointer_expression "*piVar15" * identifier)) )) ;) })) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "bVar17 = (bool)(param_5 != '\0' & bVar2);" (assignment_expression "bVar17 = (bool)(param_5 != '\0' & bVar2)" identifier = (cast_expression "(bool)(param_5 != '\0' & bVar2)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(param_5 != '\0' & bVar2)" ( (binary_expression "param_5 != '\0' & bVar2" (binary_expression "param_5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) & identifier) )))) ;) (if_statement "if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" if (parenthesized_expression "(param_10 == (int *)0x0)" ( (binary_expression "param_10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }" { (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;" statement_identifier : (if_statement "if (!bVar17) goto LAB_000f0dc0;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_000f0dc0;" goto statement_identifier ;))) (expression_statement "iVar21 = piVar10[0xe] + -1;" (assignment_expression "iVar21 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar21;" (assignment_expression "piVar10[0xe] = iVar21" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar13 = (uint)param_6;" (assignment_expression "uVar13 = (uint)param_6" identifier = (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" if (parenthesized_expression "((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb))" ( (binary_expression "(param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)" (parenthesized_expression "(param_6 == 0xb)" ( (binary_expression "param_6 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)" ( (comma_expression "uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb" (assignment_expression "uVar13 = (uint)*(byte *)(piVar16 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(piVar16 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(piVar16 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16 + 0xc)" ( (binary_expression "piVar16 + 0xc" identifier + number_literal) ))))) , (binary_expression "uVar13 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }" { (if_statement "if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" if (parenthesized_expression "((param_10 == (int *)0x0) || (param_10[4] != 0))" ( (binary_expression "(param_10 == (int *)0x0) || (param_10[4] != 0)" (parenthesized_expression "(param_10 == (int *)0x0)" ( (binary_expression "param_10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(param_10[4] != 0)" ( (binary_expression "param_10[4] != 0" (subscript_expression "param_10[4]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }" { (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" identifier = number_literal) ;) (labeled_statement "LAB_000f0547:\n        local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (if_statement "if (param_4 != 0) goto LAB_000f117a;" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f117a;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" else (compound_statement "{\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" { (labeled_statement "LAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" statement_identifier : (if_statement "if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" if (parenthesized_expression "(param_10[2] == 0)" ( (binary_expression "param_10[2] == 0" (subscript_expression "param_10[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }" { (if_statement "if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }" { (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000f0870;" goto statement_identifier ;) })) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 4;" (assignment_expression "uVar13 = 4" identifier = number_literal) ;) }) (else_clause "else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" else (compound_statement "{\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" { (if_statement "if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" { (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (expression_statement "FUN_000f3260(0,param_1);" (call_expression "FUN_000f3260(0,param_1)" identifier (argument_list "(0,param_1)" ( number_literal , identifier ))) ;) (labeled_statement "LAB_000f0870:\n            local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000f05be;" goto statement_identifier ;) })) (expression_statement "uVar13 = 6;" (assignment_expression "uVar13 = 6" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) })))) (labeled_statement "LAB_000f117a:\n        FUN_00072f80(iVar21,param_4);" statement_identifier : (expression_statement "FUN_00072f80(iVar21,param_4);" (call_expression "FUN_00072f80(iVar21,param_4)" identifier (argument_list "(iVar21,param_4)" ( identifier , identifier ))) ;)) (if_statement "if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }" if (parenthesized_expression "(0 < piVar11[0x1a])" ( (binary_expression "0 < piVar11[0x1a]" number_literal < (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }" { (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) }))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (if_statement "if (uVar13 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }" if (parenthesized_expression "(uVar13 < 7)" ( (binary_expression "uVar13 < 7" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }" { comment comment (expression_statement "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();" (call_expression "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" ( (binary_expression "&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI" (binary_expression "&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" (pointer_expression "&UNK_000caf71" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x71541 + uVar13 * 4)" ( (binary_expression "unaff_EDI + 0x71541 + uVar13 * 4" (binary_expression "unaff_EDI + 0x71541" identifier + number_literal) + (binary_expression "uVar13 * 4" identifier * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00086c60();" (call_expression "FUN_00086c60()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" else (compound_statement "{\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" { (if_statement "if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;" if (parenthesized_expression "((param_10 != (int *)0x0) && (param_10[4] == 0))" ( (binary_expression "(param_10 != (int *)0x0) && (param_10[4] == 0)" (parenthesized_expression "(param_10 != (int *)0x0)" ( (binary_expression "param_10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_10[4] == 0)" ( (binary_expression "param_10[4] == 0" (subscript_expression "param_10[4]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_000f11cd;" goto statement_identifier ;)) (if_statement "if (uVar13 != 5) goto LAB_000f0547;" if (parenthesized_expression "(uVar13 != 5)" ( (binary_expression "uVar13 != 5" identifier != number_literal) )) (goto_statement "goto LAB_000f0547;" goto statement_identifier ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (if_statement "if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }" if (parenthesized_expression "((param_6 != 5) && (piVar16[2] != 0))" ( (binary_expression "(param_6 != 5) && (piVar16[2] != 0)" (parenthesized_expression "(param_6 != 5)" ( (binary_expression "param_6 != 5" identifier != number_literal) )) && (parenthesized_expression "(piVar16[2] != 0)" ( (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }" { (expression_statement "local_60 = FUN_00073150(0);" (assignment_expression "local_60 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);" (call_expression "FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI)" identifier (argument_list "(piVar11,&UNK_0006dd8e + unaff_EDI)" ( identifier , (binary_expression "&UNK_0006dd8e + unaff_EDI" (pointer_expression "&UNK_0006dd8e" & identifier) + identifier) ))) ;) })) (if_statement "if (param_4 != 0) goto LAB_000f117a;" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f117a;" goto statement_identifier ;)) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (if_statement "if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" if (parenthesized_expression "((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0))" ( (binary_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)" (parenthesized_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0))" ( (binary_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)" (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x20)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(iVar21 = FUN_00049a60(0,0), iVar21 == 0)" ( (comma_expression "iVar21 = FUN_00049a60(0,0), iVar21 == 0" (assignment_expression "iVar21 = FUN_00049a60(0,0)" identifier = (call_expression "FUN_00049a60(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) , (binary_expression "iVar21 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(iVar21 = FUN_0004ed00(0), iVar21 == 0)" ( (comma_expression "iVar21 = FUN_0004ed00(0), iVar21 == 0" (assignment_expression "iVar21 = FUN_0004ed00(0)" identifier = (call_expression "FUN_0004ed00(0)" identifier (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar21 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }" { (expression_statement "FUN_00073150(0x40);" (call_expression "FUN_00073150(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) ;) (expression_statement "FUN_000626c0();" (call_expression "FUN_000626c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) (if_statement "if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }" if (parenthesized_expression "(piVar16[2] != 0)" ( (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }" { (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            piVar15 = piVar10;\n          }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" * (cast_expression "(undefined1 *)(piVar15 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 5)" ( (binary_expression "piVar15 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000d1920(param_2,0,0xffffffff);" (call_expression "FUN_000d1920(param_2,0,0xffffffff)" identifier (argument_list "(param_2,0,0xffffffff)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" else (compound_statement "{\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" { (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar15 = piVar10;\n        }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" * (cast_expression "(undefined1 *)(piVar15 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 5)" ( (binary_expression "piVar15 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);" (call_expression "FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff)" identifier (argument_list "(param_1,param_2,param_3,1,0,5,1,0xffffffff)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_000f05be:\n    FUN_0006dec0();" statement_identifier : (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }" { (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x000f05e4;" goto statement_identifier ;) })) (expression_statement "local_48 = FUN_00073150(0);" (assignment_expression "local_48 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "iVar21 = local_60 + -1;" (assignment_expression "iVar21 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) (if_statement "if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }" if (parenthesized_expression "(local_60 + -1 < 0)" ( (binary_expression "local_60 + -1 < 0" (binary_expression "local_60 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n      iVar21 = piVar11[0x1a] + -1;\n    }" { (expression_statement "iVar21 = piVar11[0x1a] + -1;" (assignment_expression "iVar21 = piVar11[0x1a] + -1" identifier = (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar18 = unaff_EDI + 0xccb05;" (assignment_expression "iVar18 = unaff_EDI + 0xccb05" identifier = (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }" { (expression_statement "iVar18 = piVar11[0x19] + iVar21 * 0x18;" (assignment_expression "iVar18 = piVar11[0x19] + iVar21 * 0x18" identifier = (binary_expression "piVar11[0x19] + iVar21 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar21 * 0x18" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar18 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar18 + 8) = piVar11[0x1a]" (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) )))) = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;" if (parenthesized_expression "(puVar12 != (undefined4 *)0x0)" ( (binary_expression "puVar12 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f05ea;" goto statement_identifier ;)) }) (else_clause "else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" else (compound_statement "{\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" { (if_statement "if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }" if (parenthesized_expression "(*param_10 != 0)" ( (binary_expression "*param_10 != 0" (pointer_expression "*param_10" * identifier) != number_literal) )) (compound_statement "{\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }" { (expression_statement "local_88 = (undefined4 *)param_10[4];" (assignment_expression "local_88 = (undefined4 *)param_10[4]" identifier = (cast_expression "(undefined4 *)param_10[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_10[4]" identifier [ number_literal ]))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (if_statement "if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }" if (parenthesized_expression "(local_88 != (undefined4 *)0x0)" ( (binary_expression "local_88 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }" { (expression_statement "local_58 = FUN_00073150(0);" (assignment_expression "local_58 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6dd71)" identifier (argument_list "(piVar11,unaff_EDI + 0x6dd71)" ( identifier , (binary_expression "unaff_EDI + 0x6dd71" identifier + number_literal) ))) ;) })) (goto_statement "goto LAB_000f0322;" goto statement_identifier ;) })) (if_statement "if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }" { (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" identifier = number_literal) ;) (expression_statement "uVar13 = 4;" (assignment_expression "uVar13 = 4" identifier = number_literal) ;) (expression_statement "local_6c = (int *)0x0;" (assignment_expression "local_6c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = piVar10[0xe] + -1;" (assignment_expression "iVar21 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar21;" (assignment_expression "piVar10[0xe] = iVar21" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000f0547;" goto statement_identifier ;) })) (expression_statement "local_6c = (int *)0x0;" (assignment_expression "local_6c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" identifier = number_literal) ;) (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000f0dc0:\n    local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x000f05e4:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;" if (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" ( (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f0b10;" goto statement_identifier ;)) (labeled_statement "LAB_000f05ea:\n    bVar17 = false;" statement_identifier : (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (do_statement "do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);" do (compound_statement "{\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    }" { (while_statement "while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }" while (parenthesized_expression "(*(int *)(extraout_ECX + local_9c * 4) == 0)" ( (binary_expression "*(int *)(extraout_ECX + local_9c * 4) == 0" (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }" { (labeled_statement "LAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];" statement_identifier : (expression_statement "puVar12 = (undefined4 *)puVar12[5];" (assignment_expression "puVar12 = (undefined4 *)puVar12[5]" identifier = (cast_expression "(undefined4 *)puVar12[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[5]" identifier [ number_literal ]))) ;)) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (if_statement "if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;" if (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" ( (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f0ab0;" goto statement_identifier ;)) })) (if_statement "if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" if (parenthesized_expression "(puVar12 == local_88)" ( (binary_expression "puVar12 == local_88" identifier == identifier) )) (compound_statement "{\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }" { (expression_statement "local_84 = local_58 + 1;" (assignment_expression "local_84 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "local_54 = FUN_00073150(0);" (assignment_expression "local_54 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddc6)" ( identifier , (binary_expression "unaff_EDI + 0x6ddc6" identifier + number_literal) ))) ;) (expression_statement "iVar21 = unaff_EDI + 0xccb05;" (assignment_expression "iVar21 = unaff_EDI + 0xccb05" identifier = (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal)) ;) (expression_statement "iVar18 = piVar11[0x1a] + -1;" (assignment_expression "iVar18 = piVar11[0x1a] + -1" identifier = (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < local_58) {\n          iVar18 = local_58;\n        }" if (parenthesized_expression "(-1 < local_58)" ( (binary_expression "-1 < local_58" number_literal < identifier) )) (compound_statement "{\n          iVar18 = local_58;\n        }" { (expression_statement "iVar18 = local_58;" (assignment_expression "iVar18 = local_58" identifier = identifier) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }" { (expression_statement "iVar21 = piVar11[0x19] + iVar18 * 0x18;" (assignment_expression "iVar21 = piVar11[0x19] + iVar18 * 0x18" identifier = (binary_expression "piVar11[0x19] + iVar18 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x18" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar21 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar21 + 8) = piVar11[0x1a]" (pointer_expression "*(int *)(iVar21 + 8)" * (cast_expression "(int *)(iVar21 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 8)" ( (binary_expression "iVar21 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (!bVar17) goto LAB_000f0d78;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_000f0d78;" goto statement_identifier ;)) }) (else_clause "else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" else (compound_statement "{\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" { (expression_statement "local_84 = piVar10[0xe] + -1;" (assignment_expression "local_84 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = local_84;" (assignment_expression "piVar10[0xe] = local_84" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }" if (parenthesized_expression "((!bVar17) && (local_88 == (undefined4 *)0x0))" ( (binary_expression "(!bVar17) && (local_88 == (undefined4 *)0x0)" (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) && (parenthesized_expression "(local_88 == (undefined4 *)0x0)" ( (binary_expression "local_88 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }" { (labeled_statement "LAB_000f0d78:\n          FUN_00073230();" statement_identifier : (expression_statement "FUN_00073230();" (call_expression "FUN_00073230()" identifier (argument_list "()" ( ))) ;)) (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) })) }))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12)" identifier (argument_list "(piVar11,unaff_EDI + 0x6dddd,*puVar12)" ( identifier , (binary_expression "unaff_EDI + 0x6dddd" identifier + number_literal) , (pointer_expression "*puVar12" * identifier) ))) ;) (if_statement "if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }" if (parenthesized_expression "(puVar12[9] != 0)" ( (binary_expression "puVar12[9] != 0" (subscript_expression "puVar12[9]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }" { (expression_statement "FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));" (call_expression "FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4))" identifier (argument_list "(*(undefined4 *)(extraout_ECX + local_9c * 4))" ( (pointer_expression "*(undefined4 *)(extraout_ECX + local_9c * 4)" * (cast_expression "(undefined4 *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) )))) ))) ;) (expression_statement "iVar21 = *piVar10;" (assignment_expression "iVar21 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = (unary_expression "~param_3" ~ identifier)) ;) (if_statement "if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" if (parenthesized_expression "(puVar12[9] == 0)" ( (binary_expression "puVar12[9] == 0" (subscript_expression "puVar12[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }" { (if_statement "if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }" if (parenthesized_expression "(*(char *)(iVar21 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar21 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar21 + 0x4d)" * (cast_expression "(char *)(iVar21 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x4d)" ( (binary_expression "iVar21 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }" { (expression_statement "FUN_000c9bf0(piVar10,0,local_84,0x10);" (call_expression "FUN_000c9bf0(piVar10,0,local_84,0x10)" identifier (argument_list "(piVar10,0,local_84,0x10)" ( identifier , number_literal , identifier , number_literal ))) ;) })) }) (else_clause "else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" else (compound_statement "{\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" { (expression_statement "iVar18 = FUN_0005e9a0();" (assignment_expression "iVar18 = FUN_0005e9a0()" identifier = (call_expression "FUN_0005e9a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }" if (parenthesized_expression "(*(char *)(iVar21 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar21 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar21 + 0x4d)" * (cast_expression "(char *)(iVar21 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x4d)" ( (binary_expression "iVar21 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }" { (expression_statement "FUN_000c9bf0(piVar10,iVar18,local_84,0x10);" (call_expression "FUN_000c9bf0(piVar10,iVar18,local_84,0x10)" identifier (argument_list "(piVar10,iVar18,local_84,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) })) (if_statement "if (iVar18 != 0) {\n            FUN_00063d60();\n          }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00063d60();\n          }" { (expression_statement "FUN_00063d60();" (call_expression "FUN_00063d60()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar18 = *(int *)(extraout_ECX + local_9c * 4)" identifier = (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar21 = iVar18 + 1;" (assignment_expression "iVar21 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (if_statement "if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" if (parenthesized_expression "(*(short *)(puVar12 + 0xd) == 0)" ( (binary_expression "*(short *)(puVar12 + 0xd) == 0" (pointer_expression "*(short *)(puVar12 + 0xd)" * (cast_expression "(short *)(puVar12 + 0xd)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar13 = 0;\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" else (compound_statement "{\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);" do (compound_statement "{\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        }" { (while_statement "while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }" { (expression_statement "sVar3 = *(short *)(puVar12[1] + iVar18 * 2);" (assignment_expression "sVar3 = *(short *)(puVar12[1] + iVar18 * 2)" identifier = (pointer_expression "*(short *)(puVar12[1] + iVar18 * 2)" * (cast_expression "(short *)(puVar12[1] + iVar18 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12[1] + iVar18 * 2)" ( (binary_expression "puVar12[1] + iVar18 * 2" (subscript_expression "puVar12[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar19 = (int)sVar3;" (assignment_expression "iVar19 = (int)sVar3" identifier = (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar19 == -2) break;" if (parenthesized_expression "(iVar19 == -2)" ( (binary_expression "iVar19 == -2" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = param_3;" (assignment_expression "uVar13 = param_3" identifier = identifier) ;) (if_statement "if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" if (parenthesized_expression "(iVar19 == -1)" ( (binary_expression "iVar19 == -1" identifier == number_literal) )) (compound_statement "{\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }" { (expression_statement "cVar9 = 'P';" (assignment_expression "cVar9 = 'P'" identifier = (char_literal "'P'" ' character ')) ;) (expression_statement "iVar20 = piVar11[0x1a];" (assignment_expression "iVar20 = piVar11[0x1a]" identifier = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;" if (parenthesized_expression "(iVar20 < piVar11[0x1b])" ( (binary_expression "iVar20 < piVar11[0x1b]" identifier < (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000f0756;" goto statement_identifier ;)) (labeled_statement "LAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);" statement_identifier : (expression_statement "FUN_00072e30(iVar21 + iVar18,0);" (call_expression "FUN_00072e30(iVar21 + iVar18,0)" identifier (argument_list "(iVar21 + iVar18,0)" ( (binary_expression "iVar21 + iVar18" identifier + identifier) , number_literal ))) ;)) }) (else_clause "else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" else (compound_statement "{\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" { (if_statement "if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }" if (parenthesized_expression "(sVar3 != (short)piVar16[10])" ( (binary_expression "sVar3 != (short)piVar16[10]" identifier != (cast_expression "(short)piVar16[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar16[10]" identifier [ number_literal ]))) )) (compound_statement "{\n                uVar13 = param_3 + 1 + iVar19;\n              }" { (expression_statement "uVar13 = param_3 + 1 + iVar19;" (assignment_expression "uVar13 = param_3 + 1 + iVar19" identifier = (binary_expression "param_3 + 1 + iVar19" (binary_expression "param_3 + 1" identifier + number_literal) + identifier)) ;) })) (expression_statement "iVar20 = piVar11[0x1a];" (assignment_expression "iVar20 = piVar11[0x1a]" identifier = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (expression_statement "cVar9 = ~(byte)(sVar3 >> 7) + 0x50;" (assignment_expression "cVar9 = ~(byte)(sVar3 >> 7) + 0x50" identifier = (binary_expression "~(byte)(sVar3 >> 7) + 0x50" (unary_expression "~(byte)(sVar3 >> 7)" ~ (call_expression "(byte)(sVar3 >> 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(sVar3 >> 7)" ( (binary_expression "sVar3 >> 7" identifier >> number_literal) )))) + number_literal)) ;) (if_statement "if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;" if (parenthesized_expression "(piVar11[0x1b] <= iVar20)" ( (binary_expression "piVar11[0x1b] <= iVar20" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) <= identifier) )) (goto_statement "goto LAB_000f080d;" goto statement_identifier ;)) (labeled_statement "LAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;" statement_identifier : (expression_statement "piVar11[0x1a] = iVar20 + 1;" (assignment_expression "piVar11[0x1a] = iVar20 + 1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;)) (expression_statement "pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);" (assignment_expression "pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18)" identifier = (cast_expression "(char *)(piVar11[0x19] + iVar20 * 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + iVar20 * 0x18)" ( (binary_expression "piVar11[0x19] + iVar20 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar20 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "*pcVar1 = cVar9;" (assignment_expression "*pcVar1 = cVar9" (pointer_expression "*pcVar1" * identifier) = identifier) ;) (expression_statement "pcVar1[2] = '\0';" (assignment_expression "pcVar1[2] = '\0'" (subscript_expression "pcVar1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[3] = '\0';" (assignment_expression "pcVar1[3] = '\0'" (subscript_expression "pcVar1[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(uint *)(pcVar1 + 4) = uVar13;" (assignment_expression "*(uint *)(pcVar1 + 4) = uVar13" (pointer_expression "*(uint *)(pcVar1 + 4)" * (cast_expression "(uint *)(pcVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + 4)" ( (binary_expression "pcVar1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(pcVar1 + 8) = iVar21 + iVar18;" (assignment_expression "*(int *)(pcVar1 + 8) = iVar21 + iVar18" (pointer_expression "*(int *)(pcVar1 + 8)" * (cast_expression "(int *)(pcVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + 8)" ( (binary_expression "pcVar1 + 8" identifier + number_literal) )))) = (binary_expression "iVar21 + iVar18" identifier + identifier)) ;) (expression_statement "pcVar1[0xc] = '\0';" (assignment_expression "pcVar1[0xc] = '\0'" (subscript_expression "pcVar1[0xc]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0xd] = '\0';" (assignment_expression "pcVar1[0xd] = '\0'" (subscript_expression "pcVar1[0xd]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0xe] = '\0';" (assignment_expression "pcVar1[0xe] = '\0'" (subscript_expression "pcVar1[0xe]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0xf] = '\0';" (assignment_expression "pcVar1[0xf] = '\0'" (subscript_expression "pcVar1[0xf]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x10] = '\0';" (assignment_expression "pcVar1[0x10] = '\0'" (subscript_expression "pcVar1[0x10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x11] = '\0';" (assignment_expression "pcVar1[0x11] = '\0'" (subscript_expression "pcVar1[0x11]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x12] = '\0';" (assignment_expression "pcVar1[0x12] = '\0'" (subscript_expression "pcVar1[0x12]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x13] = '\0';" (assignment_expression "pcVar1[0x13] = '\0'" (subscript_expression "pcVar1[0x13]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[1] = '\0';" (assignment_expression "pcVar1[1] = '\0'" (subscript_expression "pcVar1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x14] = '\0';" (assignment_expression "pcVar1[0x14] = '\0'" (subscript_expression "pcVar1[0x14]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x15] = '\0';" (assignment_expression "pcVar1[0x15] = '\0'" (subscript_expression "pcVar1[0x15]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x16] = '\0';" (assignment_expression "pcVar1[0x16] = '\0'" (subscript_expression "pcVar1[0x16]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x17] = '\0';" (assignment_expression "pcVar1[0x17] = '\0'" (subscript_expression "pcVar1[0x17]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "iVar20 = unaff_EDI + 0x6cca1;" (assignment_expression "iVar20 = unaff_EDI + 0x6cca1" identifier = (binary_expression "unaff_EDI + 0x6cca1" identifier + number_literal)) ;) (if_statement "if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }" if (parenthesized_expression "(-1 < iVar19)" ( (binary_expression "-1 < iVar19" number_literal < identifier) )) (compound_statement "{\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }" { (expression_statement "iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);" (assignment_expression "iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1])" identifier = (pointer_expression "*(int *)(iVar19 * 0x10 + piVar16[1])" * (cast_expression "(int *)(iVar19 * 0x10 + piVar16[1])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 * 0x10 + piVar16[1])" ( (binary_expression "iVar19 * 0x10 + piVar16[1]" (binary_expression "iVar19 * 0x10" identifier * number_literal) + (subscript_expression "piVar16[1]" identifier [ number_literal ])) ))))) ;) })) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20)" identifier (argument_list "(piVar11,unaff_EDI + 0x6b66a,iVar20)" ( identifier , (binary_expression "unaff_EDI + 0x6b66a" identifier + number_literal) , identifier ))) ;) (expression_statement "uVar13 = (uint)*(ushort *)(puVar12 + 0xd);" (assignment_expression "uVar13 = (uint)*(ushort *)(puVar12 + 0xd)" identifier = (binary_expression "(uint)*(ushort *)(puVar12 + 0xd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) ))))) ;) (if_statement "if ((int)uVar13 <= iVar18) goto LAB_000f0926;" if (parenthesized_expression "((int)uVar13 <= iVar18)" ( (binary_expression "(int)uVar13 <= iVar18" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_000f0926;" goto statement_identifier ;)) })) (expression_statement "iVar19 = *piVar10;" (assignment_expression "iVar19 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = (unary_expression "~param_3" ~ identifier)) ;) (if_statement "if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" if (parenthesized_expression "(*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0)" ( (binary_expression "*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0" (pointer_expression "*(int *)(iVar18 * 0x14 + puVar12[10] + 4)" * (cast_expression "(int *)(iVar18 * 0x14 + puVar12[10] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 * 0x14 + puVar12[10] + 4)" ( (binary_expression "iVar18 * 0x14 + puVar12[10] + 4" (binary_expression "iVar18 * 0x14 + puVar12[10]" (binary_expression "iVar18 * 0x14" identifier * number_literal) + (subscript_expression "puVar12[10]" identifier [ number_literal ])) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }" { (if_statement "if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }" if (parenthesized_expression "(*(char *)(iVar19 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar19 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar19 + 0x4d)" * (cast_expression "(char *)(iVar19 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x4d)" ( (binary_expression "iVar19 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              FUN_000cb850();\n            }" { (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" else (compound_statement "{\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" { (expression_statement "iVar20 = FUN_0005e9a0();" (assignment_expression "iVar20 = FUN_0005e9a0()" identifier = (call_expression "FUN_0005e9a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }" if (parenthesized_expression "(*(char *)(iVar19 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar19 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar19 + 0x4d)" * (cast_expression "(char *)(iVar19 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x4d)" ( (binary_expression "iVar19 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              FUN_000cb850();\n            }" { (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar20 != 0) {\n              FUN_00063d60();\n            }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_00063d60();\n            }" { (expression_statement "FUN_00063d60();" (call_expression "FUN_00063d60()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar19 = iVar18 + 1;" (assignment_expression "iVar19 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18)" ( identifier , (binary_expression "unaff_EDI + 0x6ddf5" identifier + number_literal) , (pointer_expression "*puVar12" * identifier) , identifier ))) ;) (expression_statement "uVar13 = (uint)*(ushort *)(puVar12 + 0xd);" (assignment_expression "uVar13 = (uint)*(ushort *)(puVar12 + 0xd)" identifier = (binary_expression "(uint)*(ushort *)(puVar12 + 0xd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" identifier = identifier) ;) }) while (parenthesized_expression "(iVar19 < (int)uVar13)" ( (binary_expression "iVar19 < (int)uVar13" identifier < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);" statement_identifier : (expression_statement "iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar18 = *(int *)(extraout_ECX + local_9c * 4)" identifier = (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) ))))) ;)) }))) (expression_statement "FUN_00072f80(uVar13,iVar18);" (call_expression "FUN_00072f80(uVar13,iVar18)" identifier (argument_list "(uVar13,iVar18)" ( identifier , identifier ))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddee,*puVar12)" ( identifier , (binary_expression "unaff_EDI + 0x6ddee" identifier + number_literal) , (pointer_expression "*puVar12" * identifier) ))) ;) (if_statement "if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }" if (parenthesized_expression "(((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0))" ( (binary_expression "((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)" (parenthesized_expression "((bVar23 && param_5 == '\0') && (local_80 == puVar12))" ( (binary_expression "(bVar23 && param_5 == '\0') && (local_80 == puVar12)" (parenthesized_expression "(bVar23 && param_5 == '\0')" ( (binary_expression "bVar23 && param_5 == '\0'" identifier && (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) && (parenthesized_expression "(local_80 == puVar12)" ( (binary_expression "local_80 == puVar12" identifier == identifier) ))) )) || (parenthesized_expression "(uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)" ( (comma_expression "uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0" (assignment_expression "uVar13 = (uint)*(byte *)((int)puVar12 + 0x36)" identifier = (binary_expression "(uint)*(byte *)((int)puVar12 + 0x36)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar12 + 0x36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x36)" ( (binary_expression "(int)puVar12 + 0x36" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (binary_expression "uVar13 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }" { (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;) })) (if_statement "if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" if (parenthesized_expression "(local_7b == 0xb)" ( (binary_expression "local_7b == 0xb" identifier == number_literal) )) (compound_statement "{\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }" { (if_statement "if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }" if (parenthesized_expression "(uVar13 == 0xb)" ( (binary_expression "uVar13 == 0xb" identifier == number_literal) )) (compound_statement "{\n          uVar13 = 2;\n        }" { (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" identifier = number_literal) ;) })) (if_statement "if (puVar12 != local_88) goto LAB_000f09ad;" if (parenthesized_expression "(puVar12 != local_88)" ( (binary_expression "puVar12 != local_88" identifier != identifier) )) (goto_statement "goto LAB_000f09ad;" goto statement_identifier ;)) (labeled_statement "LAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;" statement_identifier : (expression_statement "uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;" (assignment_expression "uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6" identifier = (binary_expression "(-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(local_6c[2] == 0) & 0xfffffffe)" ( (binary_expression "-(uint)(local_6c[2] == 0) & 0xfffffffe" (unary_expression "-(uint)(local_6c[2] == 0)" - (call_expression "(uint)(local_6c[2] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_6c[2] == 0)" ( (binary_expression "local_6c[2] == 0" (subscript_expression "local_6c[2]" identifier [ number_literal ]) == number_literal) )))) & number_literal) )) + number_literal)) ;)) (expression_statement "bVar6 = bVar23;" (assignment_expression "bVar6 = bVar23" identifier = identifier) ;) }) (else_clause "else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" else (compound_statement "{\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" { (expression_statement "uVar13 = (uint)local_7b;" (assignment_expression "uVar13 = (uint)local_7b" identifier = (cast_expression "(uint)local_7b" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (puVar12 == local_88) goto LAB_000f0c5d;" if (parenthesized_expression "(puVar12 == local_88)" ( (binary_expression "puVar12 == local_88" identifier == identifier) )) (goto_statement "goto LAB_000f0c5d;" goto statement_identifier ;)) (labeled_statement "LAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;" statement_identifier : (expression_statement "bVar6 = uVar13 == 5 || bVar23;" (assignment_expression "bVar6 = uVar13 == 5 || bVar23" identifier = (binary_expression "uVar13 == 5 || bVar23" (binary_expression "uVar13 == 5" identifier == number_literal) || identifier)) ;)) }))) (expression_statement "FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));" (call_expression "FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32))" identifier (argument_list "(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32))" ( identifier , identifier , (pointer_expression "*(undefined2 *)((int)puVar12 + 0x32)" * (cast_expression "(undefined2 *)((int)puVar12 + 0x32)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x32)" ( (binary_expression "(int)puVar12 + 0x32" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "local_b0 = iVar21;" (assignment_expression "local_b0 = iVar21" identifier = identifier) ;) (if_statement "if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }" if (parenthesized_expression "(local_80 != puVar12)" ( (binary_expression "local_80 != puVar12" identifier != identifier) )) (compound_statement "{\n        local_b0 = FUN_00045e40();\n      }" { (expression_statement "local_b0 = FUN_00045e40();" (assignment_expression "local_b0 = FUN_00045e40()" identifier = (call_expression "FUN_00045e40()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }" { (if_statement "if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" if (parenthesized_expression "((*(byte *)(piVar16 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar16 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar16 + 9) & 0x20)" ( (binary_expression "*(byte *)(piVar16 + 9) & 0x20" (pointer_expression "*(byte *)(piVar16 + 9)" * (cast_expression "(byte *)(piVar16 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16 + 9)" ( (binary_expression "piVar16 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }" { (expression_statement "FUN_00073150(local_b0);" (call_expression "FUN_00073150(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (if_statement "if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }" { (expression_statement "FUN_00072f80(local_84,param_4);" (call_expression "FUN_00072f80(local_84,param_4)" identifier (argument_list "(local_84,param_4)" ( identifier , identifier ))) ;) (if_statement "if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }" if (parenthesized_expression "(0 < piVar11[0x1a])" ( (binary_expression "0 < piVar11[0x1a]" number_literal < (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }" { (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) })) }) (else_clause "else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" else (compound_statement "{\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" { (if_statement "if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }" if (parenthesized_expression "((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0))" ( (binary_expression "(local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)" (parenthesized_expression "(local_80 != puVar12)" ( (binary_expression "local_80 != puVar12" identifier != identifier) )) && (parenthesized_expression "(*(short *)((int)local_80 + 0x32) != 0)" ( (binary_expression "*(short *)((int)local_80 + 0x32) != 0" (pointer_expression "*(short *)((int)local_80 + 0x32)" * (cast_expression "(short *)((int)local_80 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));" do (compound_statement "{\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            }" { (expression_statement "iVar19 = iVar18 * 2;" (assignment_expression "iVar19 = iVar18 * 2" identifier = (binary_expression "iVar18 * 2" identifier * number_literal)) ;) (expression_statement "sVar3 = *(short *)(local_80[1] + iVar18 * 2);" (assignment_expression "sVar3 = *(short *)(local_80[1] + iVar18 * 2)" identifier = (pointer_expression "*(short *)(local_80[1] + iVar18 * 2)" * (cast_expression "(short *)(local_80[1] + iVar18 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + iVar18 * 2)" ( (binary_expression "local_80[1] + iVar18 * 2" (subscript_expression "local_80[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" if (parenthesized_expression "(*(ushort *)(puVar12 + 0xd) == 0)" ( (binary_expression "*(ushort *)(puVar12 + 0xd) == 0" (pointer_expression "*(ushort *)(puVar12 + 0xd)" * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }" { (labeled_statement "LAB_000f0f72:\n                uVar14 = 0xffffffff;" statement_identifier : (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" else (compound_statement "{\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }" if (parenthesized_expression "(sVar3 != *(short *)puVar12[1])" ( (binary_expression "sVar3 != *(short *)puVar12[1]" identifier != (pointer_expression "*(short *)puVar12[1]" * (cast_expression "(short *)puVar12[1]" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[1]" identifier [ number_literal ])))) )) (compound_statement "{\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }" { (do_statement "do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);" do (compound_statement "{\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  }" { (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (if_statement "if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;" if (parenthesized_expression "(*(ushort *)(puVar12 + 0xd) == uVar14)" ( (binary_expression "*(ushort *)(puVar12 + 0xd) == uVar14" (pointer_expression "*(ushort *)(puVar12 + 0xd)" * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_000f0f72;" goto statement_identifier ;)) }) while (parenthesized_expression "(sVar3 != ((short *)puVar12[1])[uVar14])" ( (binary_expression "sVar3 != ((short *)puVar12[1])[uVar14]" identifier != (subscript_expression "((short *)puVar12[1])[uVar14]" (parenthesized_expression "((short *)puVar12[1])" ( (cast_expression "(short *)puVar12[1]" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[1]" identifier [ number_literal ])) )) [ identifier ])) )) ;) (expression_statement "uVar14 = (uint)(short)uVar14;" (assignment_expression "uVar14 = (uint)(short)uVar14" identifier = (cast_expression "(uint)(short)uVar14" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)uVar14" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) }))) (expression_statement "iVar20 = local_b0 + iVar18;" (assignment_expression "iVar20 = local_b0 + iVar18" identifier = (binary_expression "local_b0 + iVar18" identifier + identifier)) ;) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00072f80(uVar14,iVar20);" (call_expression "FUN_00072f80(uVar14,iVar20)" identifier (argument_list "(uVar14,iVar20)" ( identifier , identifier ))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]))" identifier (argument_list "(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]))" ( identifier , (binary_expression "unaff_EDI + 0x6dd5f" identifier + number_literal) , (pointer_expression "*piVar16" * identifier) , (pointer_expression "*(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" * (cast_expression "(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" ( (binary_expression "*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]" (binary_expression "*(short *)(local_80[1] + iVar19) * 0x10" (pointer_expression "*(short *)(local_80[1] + iVar19)" * (cast_expression "(short *)(local_80[1] + iVar19)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + iVar19)" ( (binary_expression "local_80[1] + iVar19" (subscript_expression "local_80[1]" identifier [ number_literal ]) + identifier) )))) * number_literal) + (subscript_expression "piVar16[1]" identifier [ number_literal ])) )))) ))) ;) }) while (parenthesized_expression "(iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32))" ( (binary_expression "iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32)" identifier < (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) })) (if_statement "if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }" { (expression_statement "iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);" (assignment_expression "iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32)" identifier = (binary_expression "piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32)" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "(uint)*(ushort *)((int)local_80 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "iVar18 = local_b0;" (assignment_expression "iVar18 = local_b0" identifier = identifier) ;) (if_statement "if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }" if (parenthesized_expression "((*(byte *)((int)puVar12 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)((int)puVar12 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)((int)puVar12 + 0x37) & 3)" ( (binary_expression "*(byte *)((int)puVar12 + 0x37) & 3" (pointer_expression "*(byte *)((int)puVar12 + 0x37)" * (cast_expression "(byte *)((int)puVar12 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x37)" ( (binary_expression "(int)puVar12 + 0x37" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar18 = iVar21;\n            }" { (expression_statement "iVar18 = iVar21;" (assignment_expression "iVar18 = iVar21" identifier = identifier) ;) })) (if_statement "if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }" if (parenthesized_expression "(*(ushort *)((int)local_80 + 0x32) != 0)" ( (binary_expression "*(ushort *)((int)local_80 + 0x32) != 0" (pointer_expression "*(ushort *)((int)local_80 + 0x32)" * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));" do (compound_statement "{\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              }" { (while_statement "while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }" { (expression_statement "FUN_0008c270();" (call_expression "FUN_0008c270()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }" if (parenthesized_expression "(*(ushort *)((int)local_80 + 0x32) - 1 == iVar20)" ( (binary_expression "*(ushort *)((int)local_80 + 0x32) - 1 == iVar20" (binary_expression "*(ushort *)((int)local_80 + 0x32) - 1" (pointer_expression "*(ushort *)((int)local_80 + 0x32)" * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal) == identifier) )) (compound_statement "{\n                    iVar19 = local_84;\n                  }" { (expression_statement "iVar19 = local_84;" (assignment_expression "iVar19 = local_84" identifier = identifier) ;) })) (expression_statement "FUN_00072f80(iVar19,iVar18 + iVar20);" (call_expression "FUN_00072f80(iVar19,iVar18 + iVar20)" identifier (argument_list "(iVar19,iVar18 + iVar20)" ( identifier , (binary_expression "iVar18 + iVar20" identifier + identifier) ))) ;) (expression_statement "FUN_00062750(0xfffffffe);" (call_expression "FUN_00062750(0xfffffffe)" identifier (argument_list "(0xfffffffe)" ( number_literal ))) ;) (if_statement "if (piVar11[0x1a] < 1) break;" if (parenthesized_expression "(piVar11[0x1a] < 1)" ( (binary_expression "piVar11[0x1a] < 1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) (if_statement "if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;" if (parenthesized_expression "((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20)" ( (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20" (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_000f0a30;" goto statement_identifier ;)) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32))" ( (binary_expression "iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32)" identifier < (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) })) })) }))) })) (labeled_statement "LAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" statement_identifier : (if_statement "if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" if (parenthesized_expression "(uVar13 == 4)" ( (binary_expression "uVar13 == 4" identifier == number_literal) )) (compound_statement "{\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }" { (labeled_statement "LAB_000f0b65:\n        FUN_00073150(param_7);" statement_identifier : (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;)) (if_statement "if (puVar12 != local_88) goto LAB_000f0a5e;" if (parenthesized_expression "(puVar12 != local_88)" ( (binary_expression "puVar12 != local_88" identifier != identifier) )) (goto_statement "goto LAB_000f0a5e;" goto statement_identifier ;)) (labeled_statement "LAB_000f0b8a:\n        FUN_00073150(local_58 + 1);" statement_identifier : (expression_statement "FUN_00073150(local_58 + 1);" (call_expression "FUN_00073150(local_58 + 1)" identifier (argument_list "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) ))) ;)) (expression_statement "iVar18 = piVar11[0x1a] + -1;" (assignment_expression "iVar18 = piVar11[0x1a] + -1" identifier = (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < local_54) {\n          iVar18 = local_54;\n        }" if (parenthesized_expression "(-1 < local_54)" ( (binary_expression "-1 < local_54" number_literal < identifier) )) (compound_statement "{\n          iVar18 = local_54;\n        }" { (expression_statement "iVar18 = local_54;" (assignment_expression "iVar18 = local_54" identifier = identifier) ;) })) (expression_statement "iVar19 = unaff_EDI + 0xccb05;" (assignment_expression "iVar19 = unaff_EDI + 0xccb05" identifier = (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }" { (expression_statement "iVar19 = piVar11[0x19] + iVar18 * 0x18;" (assignment_expression "iVar19 = piVar11[0x19] + iVar18 * 0x18" identifier = (binary_expression "piVar11[0x19] + iVar18 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x18" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar19 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar19 + 8) = piVar11[0x1a]" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" else (compound_statement "{\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" { (if_statement "if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" if (parenthesized_expression "((int)uVar13 < 5)" ( (binary_expression "(int)uVar13 < 5" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }" { (if_statement "if ((int)uVar13 < 1) goto LAB_000f0c80;" if (parenthesized_expression "((int)uVar13 < 1)" ( (binary_expression "(int)uVar13 < 1" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_000f0c80;" goto statement_identifier ;)) (expression_statement "FUN_00097090();" (call_expression "FUN_00097090()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" else (compound_statement "{\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" { (if_statement "if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }" if (parenthesized_expression "(uVar13 == 6)" ( (binary_expression "uVar13 == 6" identifier == number_literal) )) (compound_statement "{\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }" { (expression_statement "FUN_000f3260(puVar12,local_9c + param_2);" (call_expression "FUN_000f3260(puVar12,local_9c + param_2)" identifier (argument_list "(puVar12,local_9c + param_2)" ( identifier , (binary_expression "local_9c + param_2" identifier + identifier) ))) ;) (goto_statement "goto LAB_000f0b65;" goto statement_identifier ;) })) (labeled_statement "LAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" statement_identifier : (if_statement "if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" if (parenthesized_expression "((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))))))" ( (binary_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))" (parenthesized_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))" ( (binary_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0)" (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x20)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar18 = FUN_00049a60(0,0), iVar18 != 0)" ( (comma_expression "iVar18 = FUN_00049a60(0,0), iVar18 != 0" (assignment_expression "iVar18 = FUN_00049a60(0,0)" identifier = (call_expression "FUN_00049a60(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) , (binary_expression "iVar18 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))" ( (parenthesized_expression "((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))))" ( (binary_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))" (binary_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(*piVar10 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*piVar10 + 0x1d)" * (cast_expression "(byte *)(*piVar10 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar10 + 0x1d)" ( (binary_expression "*piVar10 + 0x1d" (pointer_expression "*piVar10" * identifier) + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))" ( (parenthesized_expression "(iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))" ( (comma_expression "iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)" (assignment_expression "iVar18 = FUN_00049430()" identifier = (call_expression "FUN_00049430()" identifier (argument_list "()" ( )))) , (binary_expression "*(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)" (binary_expression "*(int *)(iVar18 + 8) != 0" (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) )))) != number_literal) || (parenthesized_expression "(piVar16[4] != 0)" ( (binary_expression "piVar16[4] != 0" (subscript_expression "piVar16[4]" identifier [ number_literal ]) != number_literal) )))) )) ))) )) ))) )) (compound_statement "{\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" { (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar15 = piVar10;\n            }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" * (cast_expression "(undefined1 *)(piVar15 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 5)" ( (binary_expression "piVar15 + 5" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);" (call_expression "FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2)" identifier (argument_list "(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2)" ( identifier , identifier , identifier , (cast_expression "(int)(short)local_78" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_78" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) , number_literal , number_literal , (binary_expression "local_80 == puVar12" identifier == identifier) , (binary_expression "local_9c + param_2" identifier + identifier) ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) (if_statement "if (puVar12 == local_88) goto LAB_000f0b8a;" if (parenthesized_expression "(puVar12 == local_88)" ( (binary_expression "puVar12 == local_88" identifier == identifier) )) (goto_statement "goto LAB_000f0b8a;" goto statement_identifier ;)) (labeled_statement "LAB_000f0a5e:\n        FUN_0006dec0();" statement_identifier : (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;)) })))) (if_statement "if (local_b0 == iVar21) goto LAB_000f0608;" if (parenthesized_expression "(local_b0 == iVar21)" ( (binary_expression "local_b0 == iVar21" identifier == identifier) )) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;)) (if_statement "if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" if (parenthesized_expression "(local_78 == 1)" ( (binary_expression "local_78 == 1" identifier == number_literal) )) (compound_statement "{\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" { (if_statement "if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }" if (parenthesized_expression "(local_b0 != 0)" ( (binary_expression "local_b0 != 0" identifier != number_literal) )) (compound_statement "{\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }" { (expression_statement "bVar2 = *(byte *)((int)piVar10 + 0x13);" (assignment_expression "bVar2 = *(byte *)((int)piVar10 + 0x13)" identifier = (pointer_expression "*(byte *)((int)piVar10 + 0x13)" * (cast_expression "(byte *)((int)piVar10 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }" if (parenthesized_expression "(bVar2 < 8)" ( (binary_expression "bVar2 < 8" identifier < number_literal) )) (compound_statement "{\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }" { (expression_statement "*(byte *)((int)piVar10 + 0x13) = bVar2 + 1;" (assignment_expression "*(byte *)((int)piVar10 + 0x13) = bVar2 + 1" (pointer_expression "*(byte *)((int)piVar10 + 0x13)" * (cast_expression "(byte *)((int)piVar10 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar2 + 1" identifier + number_literal)) ;) (expression_statement "piVar10[bVar2 + 0x24] = local_b0;" (assignment_expression "piVar10[bVar2 + 0x24] = local_b0" (subscript_expression "piVar10[bVar2 + 0x24]" identifier [ (binary_expression "bVar2 + 0x24" identifier + number_literal) ]) = identifier) ;) })) })) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;) })) (if_statement "if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;" if (parenthesized_expression "((int)local_78 <= piVar10[7])" ( (binary_expression "(int)local_78 <= piVar10[7]" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) <= (subscript_expression "piVar10[7]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;)) (expression_statement "piVar10[7] = local_78;" (assignment_expression "piVar10[7] = local_78" (subscript_expression "piVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (expression_statement "piVar10[8] = local_b0;" (assignment_expression "piVar10[8] = local_b0" (subscript_expression "piVar10[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar12 = (undefined4 *)puVar12[5];" (assignment_expression "puVar12 = (undefined4 *)puVar12[5]" identifier = (cast_expression "(undefined4 *)puVar12[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[5]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(puVar12 != (undefined4 *)0x0)" ( (binary_expression "puVar12 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;" statement_identifier : (if_statement "if (local_60 == 0) goto LAB_000f0b10;" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0b10;" goto statement_identifier ;))) }))) (expression_statement "FUN_00073150(local_60);" (call_expression "FUN_00073150(local_60)" identifier (argument_list "(local_60)" ( identifier ))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6de02);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6de02)" identifier (argument_list "(piVar11,unaff_EDI + 0x6de02)" ( identifier , (binary_expression "unaff_EDI + 0x6de02" identifier + number_literal) ))) ;) (expression_statement "iVar4 = piVar11[0x1a];" (assignment_expression "iVar4 = piVar11[0x1a]" identifier = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (expression_statement "iVar21 = iVar4 + -1;" (assignment_expression "iVar21 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (-1 < local_48) {\n    iVar21 = local_48;\n  }" if (parenthesized_expression "(-1 < local_48)" ( (binary_expression "-1 < local_48" number_literal < identifier) )) (compound_statement "{\n    iVar21 = local_48;\n  }" { (expression_statement "iVar21 = local_48;" (assignment_expression "iVar21 = local_48" identifier = identifier) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }" { (expression_statement "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;" (assignment_expression "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4" (pointer_expression "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8)" * (cast_expression "(int *)(piVar11[0x19] + iVar21 * 0x18 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + iVar21 * 0x18 + 8)" ( (binary_expression "piVar11[0x19] + iVar21 * 0x18 + 8" (binary_expression "piVar11[0x19] + iVar21 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar21 * 0x18" identifier * number_literal)) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" else (compound_statement "{\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" { (expression_statement "*(int *)(unaff_EDI + 0xccb0d) = iVar4;" (assignment_expression "*(int *)(unaff_EDI + 0xccb0d) = iVar4" (pointer_expression "*(int *)(unaff_EDI + 0xccb0d)" * (cast_expression "(int *)(unaff_EDI + 0xccb0d)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xccb0d)" ( (binary_expression "unaff_EDI + 0xccb0d" identifier + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_000f0b10:\n  *param_8 = local_5c;" statement_identifier : (expression_statement "*param_8 = local_5c;" (assignment_expression "*param_8 = local_5c" (pointer_expression "*param_8" * identifier) = identifier) ;)) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }" { comment (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void sqlite3GenerateConstraintChecks\n               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)\n\n{\n  Vdbe *p;\n  byte bVar1;\n  short sVar2;\n  int iVar3;\n  sqlite3 *db;\n  int iVar4;\n  ExprList *pEVar5;\n  sqlite3 *psVar6;\n  code *pcVar7;\n  bool bVar8;\n  byte bVar9;\n  u8 uVar10;\n  Parse *pParse_00;\n  Vdbe *p_00;\n  Column *pCVar11;\n  uint uVar12;\n  Trigger *pTVar13;\n  Expr *pEVar14;\n  char *p1;\n  HashElem *pHVar15;\n  char *pcVar16;\n  Parse *pPVar17;\n  CollSeq *zP4;\n  char cVar18;\n  int extraout_ECX;\n  int *piVar19;\n  Op *pOVar20;\n  Table *pTab_00;\n  bool bVar21;\n  int iVar22;\n  uint uVar23;\n  Index *pIdx;\n  int unaff_EDI;\n  int iVar24;\n  ExprList_item *pEVar25;\n  int in_GS_OFFSET;\n  bool bVar26;\n  undefined8 uVar27;\n  undefined3 in_stack_00000021;\n  undefined3 in_stack_00000025;\n  Parse *in_stack_ffffff38;\n  Parse *pPVar28;\n  Parse *in_stack_ffffff40;\n  Parse *pPVar29;\n  u8 **in_stack_ffffff44;\n  u8 in_stack_ffffff48;\n  int in_stack_ffffff4c;\n  Parse *local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  int local_94;\n  Index *local_88;\n  char *local_84;\n  Index *local_80;\n  byte local_7b;\n  uint local_78;\n  Upsert *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  Walker w;\n  \n  uVar27 = __x86_get_pc_thunk_di();\n  pTab_00 = (Table *)((ulonglong)uVar27 >> 0x20);\n  pParse_00 = (Parse *)uVar27;\n  p_00 = pParse_00->pVdbe;\n  local_6c = (Upsert *)ignoreDest;\n  cVar18 = (char)iIdxCur;\n  local_7b = (byte)regNewData;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  db = pParse_00->db;\n  bVar26 = iDataCur != 0;\n  if (p_00 == (Vdbe *)0x0) {\n    in_stack_ffffff40 = (Parse *)0xeff48;\n    p_00 = sqlite3GetVdbe(pParse_00);\n  }\n  iVar24 = (int)pTab_00->nCol;\n  if ((pTab_00->tabFlags & 0x20) == 0) {\n    bVar1 = 1;\n    local_78 = 1;\n    local_80 = (Index *)0x0;\n  }\n  else {\n    local_80 = pTab_00->pIndex;\n    if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    bVar1 = local_80->field_0x37;\n    while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }\n    bVar1 = 0;\n    local_78 = (uint)local_80->nKeyCol;\n  }\n  iVar22 = 0;\n  if (0 < iVar24) {\n    do {\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    } while (iVar24 != iVar22);\n  }\nLAB_000f0158:\n  pEVar5 = pTab_00->pCheck;\n  if ((pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    local_ac = 0;\n    pParse_00->iSelfTab = ~(uint)aRegIdx;\n    uVar23 = 2;\n    if (local_7b != 0xb) {\n      uVar23 = regNewData;\n    }\n    uVar23 = uVar23 & 0xff;\n    pEVar25 = pEVar5->a;\n    if (0 < pEVar5->nExpr) {\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }\n    pParse_00->iSelfTab = 0;\n  }\n  bVar21 = (bool)(cVar18 != '\0' & bVar1);\n  if (ignoreDest == 0) {\n    local_88 = (Index *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar21) goto LAB_000f0dc0;\n    iVar24 = pParse_00->nLabel + -1;\n    pParse_00->nLabel = iVar24;\n    uVar23 = regNewData & 0xff;\n    if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }\n    else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }\nLAB_000f05be:\n    in_stack_ffffff40 = (Parse *)0xf05c7;\n    sqlite3VdbeResolveLabel(p_00,iVar24);\n    if (local_60 == 0) {\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }\n    local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n    iVar24 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar24 = p_00->nOp + -1;\n    }\n    pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n    if (p_00->db->mallocFailed == '\0') {\n      pOVar20 = p_00->aOp + iVar24;\n    }\n    pOVar20->p2 = p_00->nOp;\n    pIdx = pTab_00->pIndex;\n    if (pIdx != (Index *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (Upsert *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (Index *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    pIdx = pTab_00->pIndex;\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (pIdx == (Index *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar21 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  sqlite3VdbeAddOp3(p_00,0xb,0,local_60,(int)in_stack_ffffff38);\n  sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6de02));\n  iVar24 = p_00->nOp;\n  iVar22 = iVar24 + -1;\n  if (-1 < local_48) {\n    iVar22 = local_48;\n  }\n  if (p_00->db->mallocFailed == '\0') {\n    p_00->aOp[iVar22].p2 = iVar24;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar24;\n  }\nLAB_000f0b10:\n  *_pkChng = local_5c;\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}\n\n" (function_definition "void sqlite3GenerateConstraintChecks\n               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)\n\n{\n  Vdbe *p;\n  byte bVar1;\n  short sVar2;\n  int iVar3;\n  sqlite3 *db;\n  int iVar4;\n  ExprList *pEVar5;\n  sqlite3 *psVar6;\n  code *pcVar7;\n  bool bVar8;\n  byte bVar9;\n  u8 uVar10;\n  Parse *pParse_00;\n  Vdbe *p_00;\n  Column *pCVar11;\n  uint uVar12;\n  Trigger *pTVar13;\n  Expr *pEVar14;\n  char *p1;\n  HashElem *pHVar15;\n  char *pcVar16;\n  Parse *pPVar17;\n  CollSeq *zP4;\n  char cVar18;\n  int extraout_ECX;\n  int *piVar19;\n  Op *pOVar20;\n  Table *pTab_00;\n  bool bVar21;\n  int iVar22;\n  uint uVar23;\n  Index *pIdx;\n  int unaff_EDI;\n  int iVar24;\n  ExprList_item *pEVar25;\n  int in_GS_OFFSET;\n  bool bVar26;\n  undefined8 uVar27;\n  undefined3 in_stack_00000021;\n  undefined3 in_stack_00000025;\n  Parse *in_stack_ffffff38;\n  Parse *pPVar28;\n  Parse *in_stack_ffffff40;\n  Parse *pPVar29;\n  u8 **in_stack_ffffff44;\n  u8 in_stack_ffffff48;\n  int in_stack_ffffff4c;\n  Parse *local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  int local_94;\n  Index *local_88;\n  char *local_84;\n  Index *local_80;\n  byte local_7b;\n  uint local_78;\n  Upsert *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  Walker w;\n  \n  uVar27 = __x86_get_pc_thunk_di();\n  pTab_00 = (Table *)((ulonglong)uVar27 >> 0x20);\n  pParse_00 = (Parse *)uVar27;\n  p_00 = pParse_00->pVdbe;\n  local_6c = (Upsert *)ignoreDest;\n  cVar18 = (char)iIdxCur;\n  local_7b = (byte)regNewData;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  db = pParse_00->db;\n  bVar26 = iDataCur != 0;\n  if (p_00 == (Vdbe *)0x0) {\n    in_stack_ffffff40 = (Parse *)0xeff48;\n    p_00 = sqlite3GetVdbe(pParse_00);\n  }\n  iVar24 = (int)pTab_00->nCol;\n  if ((pTab_00->tabFlags & 0x20) == 0) {\n    bVar1 = 1;\n    local_78 = 1;\n    local_80 = (Index *)0x0;\n  }\n  else {\n    local_80 = pTab_00->pIndex;\n    if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    bVar1 = local_80->field_0x37;\n    while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }\n    bVar1 = 0;\n    local_78 = (uint)local_80->nKeyCol;\n  }\n  iVar22 = 0;\n  if (0 < iVar24) {\n    do {\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    } while (iVar24 != iVar22);\n  }\nLAB_000f0158:\n  pEVar5 = pTab_00->pCheck;\n  if ((pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    local_ac = 0;\n    pParse_00->iSelfTab = ~(uint)aRegIdx;\n    uVar23 = 2;\n    if (local_7b != 0xb) {\n      uVar23 = regNewData;\n    }\n    uVar23 = uVar23 & 0xff;\n    pEVar25 = pEVar5->a;\n    if (0 < pEVar5->nExpr) {\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }\n    pParse_00->iSelfTab = 0;\n  }\n  bVar21 = (bool)(cVar18 != '\0' & bVar1);\n  if (ignoreDest == 0) {\n    local_88 = (Index *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar21) goto LAB_000f0dc0;\n    iVar24 = pParse_00->nLabel + -1;\n    pParse_00->nLabel = iVar24;\n    uVar23 = regNewData & 0xff;\n    if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }\n    else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }\nLAB_000f05be:\n    in_stack_ffffff40 = (Parse *)0xf05c7;\n    sqlite3VdbeResolveLabel(p_00,iVar24);\n    if (local_60 == 0) {\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }\n    local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n    iVar24 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar24 = p_00->nOp + -1;\n    }\n    pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n    if (p_00->db->mallocFailed == '\0') {\n      pOVar20 = p_00->aOp + iVar24;\n    }\n    pOVar20->p2 = p_00->nOp;\n    pIdx = pTab_00->pIndex;\n    if (pIdx != (Index *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (Upsert *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (Index *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    pIdx = pTab_00->pIndex;\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (pIdx == (Index *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar21 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  sqlite3VdbeAddOp3(p_00,0xb,0,local_60,(int)in_stack_ffffff38);\n  sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6de02));\n  iVar24 = p_00->nOp;\n  iVar22 = iVar24 + -1;\n  if (-1 < local_48) {\n    iVar22 = local_48;\n  }\n  if (p_00->db->mallocFailed == '\0') {\n    p_00->aOp[iVar22].p2 = iVar24;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar24;\n  }\nLAB_000f0b10:\n  *_pkChng = local_5c;\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" primitive_type (function_declarator "sqlite3GenerateConstraintChecks\n               (Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)" identifier (parameter_list "(Parse *pParse,Table *pTab,int *aRegIdx,int iDataCur,int iIdxCur,int regNewData,\n               int regOldData,u8 pkChng,u8 overrideError,int ignoreDest,int *pbMayReplace,\n               int *aiChng,Upsert *pUpsert)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "int *aRegIdx" primitive_type (pointer_declarator "*aRegIdx" * identifier)) , (parameter_declaration "int iDataCur" primitive_type identifier) , (parameter_declaration "int iIdxCur" primitive_type identifier) , (parameter_declaration "int regNewData" primitive_type identifier) , (parameter_declaration "int regOldData" primitive_type identifier) , (parameter_declaration "u8 pkChng" type_identifier identifier) , (parameter_declaration "u8 overrideError" type_identifier identifier) , (parameter_declaration "int ignoreDest" primitive_type identifier) , (parameter_declaration "int *pbMayReplace" primitive_type (pointer_declarator "*pbMayReplace" * identifier)) , (parameter_declaration "int *aiChng" primitive_type (pointer_declarator "*aiChng" * identifier)) , (parameter_declaration "Upsert *pUpsert" type_identifier (pointer_declarator "*pUpsert" * identifier)) ))) (compound_statement "{\n  Vdbe *p;\n  byte bVar1;\n  short sVar2;\n  int iVar3;\n  sqlite3 *db;\n  int iVar4;\n  ExprList *pEVar5;\n  sqlite3 *psVar6;\n  code *pcVar7;\n  bool bVar8;\n  byte bVar9;\n  u8 uVar10;\n  Parse *pParse_00;\n  Vdbe *p_00;\n  Column *pCVar11;\n  uint uVar12;\n  Trigger *pTVar13;\n  Expr *pEVar14;\n  char *p1;\n  HashElem *pHVar15;\n  char *pcVar16;\n  Parse *pPVar17;\n  CollSeq *zP4;\n  char cVar18;\n  int extraout_ECX;\n  int *piVar19;\n  Op *pOVar20;\n  Table *pTab_00;\n  bool bVar21;\n  int iVar22;\n  uint uVar23;\n  Index *pIdx;\n  int unaff_EDI;\n  int iVar24;\n  ExprList_item *pEVar25;\n  int in_GS_OFFSET;\n  bool bVar26;\n  undefined8 uVar27;\n  undefined3 in_stack_00000021;\n  undefined3 in_stack_00000025;\n  Parse *in_stack_ffffff38;\n  Parse *pPVar28;\n  Parse *in_stack_ffffff40;\n  Parse *pPVar29;\n  u8 **in_stack_ffffff44;\n  u8 in_stack_ffffff48;\n  int in_stack_ffffff4c;\n  Parse *local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  int local_94;\n  Index *local_88;\n  char *local_84;\n  Index *local_80;\n  byte local_7b;\n  uint local_78;\n  Upsert *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  Walker w;\n  \n  uVar27 = __x86_get_pc_thunk_di();\n  pTab_00 = (Table *)((ulonglong)uVar27 >> 0x20);\n  pParse_00 = (Parse *)uVar27;\n  p_00 = pParse_00->pVdbe;\n  local_6c = (Upsert *)ignoreDest;\n  cVar18 = (char)iIdxCur;\n  local_7b = (byte)regNewData;\n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  db = pParse_00->db;\n  bVar26 = iDataCur != 0;\n  if (p_00 == (Vdbe *)0x0) {\n    in_stack_ffffff40 = (Parse *)0xeff48;\n    p_00 = sqlite3GetVdbe(pParse_00);\n  }\n  iVar24 = (int)pTab_00->nCol;\n  if ((pTab_00->tabFlags & 0x20) == 0) {\n    bVar1 = 1;\n    local_78 = 1;\n    local_80 = (Index *)0x0;\n  }\n  else {\n    local_80 = pTab_00->pIndex;\n    if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    bVar1 = local_80->field_0x37;\n    while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }\n    bVar1 = 0;\n    local_78 = (uint)local_80->nKeyCol;\n  }\n  iVar22 = 0;\n  if (0 < iVar24) {\n    do {\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    } while (iVar24 != iVar22);\n  }\nLAB_000f0158:\n  pEVar5 = pTab_00->pCheck;\n  if ((pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    local_ac = 0;\n    pParse_00->iSelfTab = ~(uint)aRegIdx;\n    uVar23 = 2;\n    if (local_7b != 0xb) {\n      uVar23 = regNewData;\n    }\n    uVar23 = uVar23 & 0xff;\n    pEVar25 = pEVar5->a;\n    if (0 < pEVar5->nExpr) {\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }\n    pParse_00->iSelfTab = 0;\n  }\n  bVar21 = (bool)(cVar18 != '\0' & bVar1);\n  if (ignoreDest == 0) {\n    local_88 = (Index *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar21) goto LAB_000f0dc0;\n    iVar24 = pParse_00->nLabel + -1;\n    pParse_00->nLabel = iVar24;\n    uVar23 = regNewData & 0xff;\n    if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }\n    else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }\nLAB_000f05be:\n    in_stack_ffffff40 = (Parse *)0xf05c7;\n    sqlite3VdbeResolveLabel(p_00,iVar24);\n    if (local_60 == 0) {\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }\n    local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n    iVar24 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar24 = p_00->nOp + -1;\n    }\n    pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n    if (p_00->db->mallocFailed == '\0') {\n      pOVar20 = p_00->aOp + iVar24;\n    }\n    pOVar20->p2 = p_00->nOp;\n    pIdx = pTab_00->pIndex;\n    if (pIdx != (Index *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (Upsert *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (Index *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    pIdx = pTab_00->pIndex;\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (pIdx == (Index *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar21 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  sqlite3VdbeAddOp3(p_00,0xb,0,local_60,(int)in_stack_ffffff38);\n  sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6de02));\n  iVar24 = p_00->nOp;\n  iVar22 = iVar24 + -1;\n  if (-1 < local_48) {\n    iVar22 = local_48;\n  }\n  if (p_00->db->mallocFailed == '\0') {\n    p_00->aOp[iVar22].p2 = iVar24;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar24;\n  }\nLAB_000f0b10:\n  *_pkChng = local_5c;\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" { (declaration "Vdbe *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ExprList *pEVar5;" type_identifier (pointer_declarator "*pEVar5" * identifier) ;) (declaration "sqlite3 *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "u8 uVar10;" type_identifier identifier ;) (declaration "Parse *pParse_00;" type_identifier (pointer_declarator "*pParse_00" * identifier) ;) (declaration "Vdbe *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "Column *pCVar11;" type_identifier (pointer_declarator "*pCVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "Trigger *pTVar13;" type_identifier (pointer_declarator "*pTVar13" * identifier) ;) (declaration "Expr *pEVar14;" type_identifier (pointer_declarator "*pEVar14" * identifier) ;) (declaration "char *p1;" primitive_type (pointer_declarator "*p1" * identifier) ;) (declaration "HashElem *pHVar15;" type_identifier (pointer_declarator "*pHVar15" * identifier) ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "Parse *pPVar17;" type_identifier (pointer_declarator "*pPVar17" * identifier) ;) (declaration "CollSeq *zP4;" type_identifier (pointer_declarator "*zP4" * identifier) ;) (declaration "char cVar18;" primitive_type identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "Op *pOVar20;" type_identifier (pointer_declarator "*pOVar20" * identifier) ;) (declaration "Table *pTab_00;" type_identifier (pointer_declarator "*pTab_00" * identifier) ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "Index *pIdx;" type_identifier (pointer_declarator "*pIdx" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "ExprList_item *pEVar25;" type_identifier (pointer_declarator "*pEVar25" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar26;" primitive_type identifier ;) (declaration "undefined8 uVar27;" type_identifier identifier ;) (declaration "undefined3 in_stack_00000021;" type_identifier identifier ;) (declaration "undefined3 in_stack_00000025;" type_identifier identifier ;) (declaration "Parse *in_stack_ffffff38;" type_identifier (pointer_declarator "*in_stack_ffffff38" * identifier) ;) (declaration "Parse *pPVar28;" type_identifier (pointer_declarator "*pPVar28" * identifier) ;) (declaration "Parse *in_stack_ffffff40;" type_identifier (pointer_declarator "*in_stack_ffffff40" * identifier) ;) (declaration "Parse *pPVar29;" type_identifier (pointer_declarator "*pPVar29" * identifier) ;) (declaration "u8 **in_stack_ffffff44;" type_identifier (pointer_declarator "**in_stack_ffffff44" * (pointer_declarator "*in_stack_ffffff44" * identifier)) ;) (declaration "u8 in_stack_ffffff48;" type_identifier identifier ;) (declaration "int in_stack_ffffff4c;" primitive_type identifier ;) (declaration "Parse *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "Index *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "char *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "Index *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "byte local_7b;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "Upsert *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "Walker w;" type_identifier identifier ;) (expression_statement "uVar27 = __x86_get_pc_thunk_di();" (assignment_expression "uVar27 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pTab_00 = (Table *)((ulonglong)uVar27 >> 0x20);" (assignment_expression "pTab_00 = (Table *)((ulonglong)uVar27 >> 0x20)" identifier = (cast_expression "(Table *)((ulonglong)uVar27 >> 0x20)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar27 >> 0x20)" ( (binary_expression "(ulonglong)uVar27 >> 0x20" (cast_expression "(ulonglong)uVar27" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pParse_00 = (Parse *)uVar27;" (assignment_expression "pParse_00 = (Parse *)uVar27" identifier = (cast_expression "(Parse *)uVar27" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "p_00 = pParse_00->pVdbe;" (assignment_expression "p_00 = pParse_00->pVdbe" identifier = (field_expression "pParse_00->pVdbe" identifier -> field_identifier)) ;) (expression_statement "local_6c = (Upsert *)ignoreDest;" (assignment_expression "local_6c = (Upsert *)ignoreDest" identifier = (cast_expression "(Upsert *)ignoreDest" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "cVar18 = (char)iIdxCur;" (assignment_expression "cVar18 = (char)iIdxCur" identifier = (cast_expression "(char)iIdxCur" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_7b = (byte)regNewData;" (assignment_expression "local_7b = (byte)regNewData" identifier = (cast_expression "(byte)regNewData" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(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 "db = pParse_00->db;" (assignment_expression "db = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (expression_statement "bVar26 = iDataCur != 0;" (assignment_expression "bVar26 = iDataCur != 0" identifier = (binary_expression "iDataCur != 0" identifier != number_literal)) ;) (if_statement "if (p_00 == (Vdbe *)0x0) {\n    in_stack_ffffff40 = (Parse *)0xeff48;\n    p_00 = sqlite3GetVdbe(pParse_00);\n  }" if (parenthesized_expression "(p_00 == (Vdbe *)0x0)" ( (binary_expression "p_00 == (Vdbe *)0x0" identifier == (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    in_stack_ffffff40 = (Parse *)0xeff48;\n    p_00 = sqlite3GetVdbe(pParse_00);\n  }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xeff48;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xeff48" identifier = (cast_expression "(Parse *)0xeff48" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_00 = sqlite3GetVdbe(pParse_00);" (assignment_expression "p_00 = sqlite3GetVdbe(pParse_00)" identifier = (call_expression "sqlite3GetVdbe(pParse_00)" identifier (argument_list "(pParse_00)" ( identifier )))) ;) })) (expression_statement "iVar24 = (int)pTab_00->nCol;" (assignment_expression "iVar24 = (int)pTab_00->nCol" identifier = (cast_expression "(int)pTab_00->nCol" ( (type_descriptor "int" primitive_type) ) (field_expression "pTab_00->nCol" identifier -> field_identifier))) ;) (if_statement "if ((pTab_00->tabFlags & 0x20) == 0) {\n    bVar1 = 1;\n    local_78 = 1;\n    local_80 = (Index *)0x0;\n  }\n  else {\n    local_80 = pTab_00->pIndex;\n    if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    bVar1 = local_80->field_0x37;\n    while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }\n    bVar1 = 0;\n    local_78 = (uint)local_80->nKeyCol;\n  }" if (parenthesized_expression "((pTab_00->tabFlags & 0x20) == 0)" ( (binary_expression "(pTab_00->tabFlags & 0x20) == 0" (parenthesized_expression "(pTab_00->tabFlags & 0x20)" ( (binary_expression "pTab_00->tabFlags & 0x20" (field_expression "pTab_00->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar1 = 1;\n    local_78 = 1;\n    local_80 = (Index *)0x0;\n  }" { (expression_statement "bVar1 = 1;" (assignment_expression "bVar1 = 1" identifier = number_literal) ;) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;) (expression_statement "local_80 = (Index *)0x0;" (assignment_expression "local_80 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_80 = pTab_00->pIndex;\n    if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    bVar1 = local_80->field_0x37;\n    while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }\n    bVar1 = 0;\n    local_78 = (uint)local_80->nKeyCol;\n  }" else (compound_statement "{\n    local_80 = pTab_00->pIndex;\n    if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }\n    bVar1 = local_80->field_0x37;\n    while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }\n    bVar1 = 0;\n    local_78 = (uint)local_80->nKeyCol;\n  }" { (expression_statement "local_80 = pTab_00->pIndex;" (assignment_expression "local_80 = pTab_00->pIndex" identifier = (field_expression "pTab_00->pIndex" identifier -> field_identifier)) ;) (if_statement "if (local_80 == (Index *)0x0) {\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" if (parenthesized_expression "(local_80 == (Index *)0x0)" ( (binary_expression "local_80 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nsqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();\n      (*pcVar7)();\n    }" { (labeled_statement "sqlite3GenerateConstraintChecks_cold_1033:\n                    /* WARNING: Does not return */\n      pcVar7 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar7 = (code *)invalidInstructionException();" (assignment_expression "pcVar7 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar7)();" (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "bVar1 = local_80->field_0x37;" (assignment_expression "bVar1 = local_80->field_0x37" identifier = (field_expression "local_80->field_0x37" identifier -> field_identifier)) ;) (while_statement "while ((bVar1 & 3) != 2) {\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }" while (parenthesized_expression "((bVar1 & 3) != 2)" ( (binary_expression "(bVar1 & 3) != 2" (parenthesized_expression "(bVar1 & 3)" ( (binary_expression "bVar1 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_80 = local_80->pNext;\n      if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;\n      bVar1 = local_80->field_0x37;\n    }" { (expression_statement "local_80 = local_80->pNext;" (assignment_expression "local_80 = local_80->pNext" identifier = (field_expression "local_80->pNext" identifier -> field_identifier)) ;) (if_statement "if (local_80 == (Index *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;" if (parenthesized_expression "(local_80 == (Index *)0x0)" ( (binary_expression "local_80 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto sqlite3GenerateConstraintChecks_cold_1033;" goto statement_identifier ;)) (expression_statement "bVar1 = local_80->field_0x37;" (assignment_expression "bVar1 = local_80->field_0x37" identifier = (field_expression "local_80->field_0x37" identifier -> field_identifier)) ;) })) (expression_statement "bVar1 = 0;" (assignment_expression "bVar1 = 0" identifier = number_literal) ;) (expression_statement "local_78 = (uint)local_80->nKeyCol;" (assignment_expression "local_78 = (uint)local_80->nKeyCol" identifier = (cast_expression "(uint)local_80->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_80->nKeyCol" identifier -> field_identifier))) ;) }))) (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar24) {\n    do {\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    } while (iVar24 != iVar22);\n  }" if (parenthesized_expression "(0 < iVar24)" ( (binary_expression "0 < iVar24" number_literal < identifier) )) (compound_statement "{\n    do {\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    } while (iVar24 != iVar22);\n  }" { (do_statement "do {\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    } while (iVar24 != iVar22);" do (compound_statement "{\n      while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }\n      pCVar11 = pTab_00->aCol + iVar22;\n      uVar23 = (uint)pCVar11->notNull;\n      if (uVar23 == 0) goto LAB_000f0048;\n      pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);\n      uVar12 = regNewData & 0xff;\n      if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      in_stack_ffffff40 = (Parse *)pCVar11->zName;\n      pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);\n      sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);\n      in_stack_ffffff38 = pPVar28;\n      if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }\n      if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar22 = iVar22 + 1;\n      in_stack_ffffff40 = (Parse *)0xf014b;\n      sqlite3VdbeResolveLabel(p_00,local_a8);\n    }" { (while_statement "while ((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))) {\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }" while (parenthesized_expression "((pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             )))" ( (parenthesized_expression "(pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             ))" ( (binary_expression "pTab_00->iPKey == iVar22 ||\n             ((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             )" (binary_expression "pTab_00->iPKey == iVar22" (field_expression "pTab_00->iPKey" identifier -> field_identifier) == identifier) || (parenthesized_expression "((_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))\n             )" ( (parenthesized_expression "(_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0))" ( (binary_expression "_overrideError != (NameContext *)0x0 && ((int)(&_overrideError->pParse)[iVar22] < 0)" (binary_expression "_overrideError != (NameContext *)0x0" identifier != (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "((int)(&_overrideError->pParse)[iVar22] < 0)" ( (binary_expression "(int)(&_overrideError->pParse)[iVar22] < 0" (cast_expression "(int)(&_overrideError->pParse)[iVar22]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&_overrideError->pParse)[iVar22]" (parenthesized_expression "(&_overrideError->pParse)" ( (pointer_expression "&_overrideError->pParse" & (field_expression "_overrideError->pParse" identifier -> field_identifier)) )) [ identifier ])) < number_literal) ))) )) ))) )) )) (compound_statement "{\nLAB_000f0048:\n        iVar22 = iVar22 + 1;\n        if (iVar24 == iVar22) goto LAB_000f0158;\n      }" { (labeled_statement "LAB_000f0048:\n        iVar22 = iVar22 + 1;" statement_identifier : (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar24 == iVar22) goto LAB_000f0158;" if (parenthesized_expression "(iVar24 == iVar22)" ( (binary_expression "iVar24 == iVar22" identifier == identifier) )) (goto_statement "goto LAB_000f0158;" goto statement_identifier ;)) })) (expression_statement "pCVar11 = pTab_00->aCol + iVar22;" (assignment_expression "pCVar11 = pTab_00->aCol + iVar22" identifier = (binary_expression "pTab_00->aCol + iVar22" (field_expression "pTab_00->aCol" identifier -> field_identifier) + identifier)) ;) (expression_statement "uVar23 = (uint)pCVar11->notNull;" (assignment_expression "uVar23 = (uint)pCVar11->notNull" identifier = (cast_expression "(uint)pCVar11->notNull" ( (type_descriptor "uint" type_identifier) ) (field_expression "pCVar11->notNull" identifier -> field_identifier))) ;) (if_statement "if (uVar23 == 0) goto LAB_000f0048;" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;)) (expression_statement "pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1);" (assignment_expression "pPVar28 = (Parse *)((int)aRegIdx + iVar22 + 1)" identifier = (cast_expression "(Parse *)((int)aRegIdx + iVar22 + 1)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)aRegIdx + iVar22 + 1)" ( (binary_expression "(int)aRegIdx + iVar22 + 1" (binary_expression "(int)aRegIdx + iVar22" (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar12 = regNewData & 0xff;" (assignment_expression "uVar12 = regNewData & 0xff" identifier = (binary_expression "regNewData & 0xff" identifier & number_literal)) ;) (if_statement "if ((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }\n      else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" if (parenthesized_expression "((local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb))" ( (binary_expression "(local_7b == 0xb) && (uVar12 = uVar23, uVar23 == 0xb)" (parenthesized_expression "(local_7b == 0xb)" ( (binary_expression "local_7b == 0xb" identifier == number_literal) )) && (parenthesized_expression "(uVar12 = uVar23, uVar23 == 0xb)" ( (comma_expression "uVar12 = uVar23, uVar23 == 0xb" (assignment_expression "uVar12 = uVar23" identifier = identifier) , (binary_expression "uVar23 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        uVar12 = 2;\n        pPVar29 = pParse_00->pToplevel;\n        if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }\n        pPVar29->mayAbort = '\x01';\n        pCVar11 = pTab_00->aCol + iVar22;\n      }" { (labeled_statement "LAB_000f009f:\n        local_a8 = 0;" statement_identifier : (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_000f00a7:\n        uVar12 = 2;" statement_identifier : (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;)) (expression_statement "pPVar29 = pParse_00->pToplevel;" (assignment_expression "pPVar29 = pParse_00->pToplevel" identifier = (field_expression "pParse_00->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse_00->pToplevel == (Parse *)0x0) {\n          pPVar29 = pParse_00;\n        }" if (parenthesized_expression "(pParse_00->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse_00->pToplevel == (Parse *)0x0" (field_expression "pParse_00->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pPVar29 = pParse_00;\n        }" { (expression_statement "pPVar29 = pParse_00;" (assignment_expression "pPVar29 = pParse_00" identifier = identifier) ;) })) (expression_statement "pPVar29->mayAbort = '\x01';" (assignment_expression "pPVar29->mayAbort = '\x01'" (field_expression "pPVar29->mayAbort" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pCVar11 = pTab_00->aCol + iVar22;" (assignment_expression "pCVar11 = pTab_00->aCol + iVar22" identifier = (binary_expression "pTab_00->aCol + iVar22" (field_expression "pTab_00->aCol" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" else (compound_statement "{\n        if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }\n        if (uVar12 == 2) goto LAB_000f009f;\n        if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" { (if_statement "if (uVar12 == 5) {\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }" if (parenthesized_expression "(uVar12 == 5)" ( (binary_expression "uVar12 == 5" identifier == number_literal) )) (compound_statement "{\n          local_a8 = 0;\n          if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }\n          goto LAB_000f00a7;\n        }" { (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (if_statement "if (pCVar11->pDflt != (Expr *)0x0) {\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }" if (parenthesized_expression "(pCVar11->pDflt != (Expr *)0x0)" ( (binary_expression "pCVar11->pDflt != (Expr *)0x0" (field_expression "pCVar11->pDflt" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;\n            pParse_00->nLabel = local_a8;\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n            sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);\n            sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);\n          }" { (labeled_statement "LAB_000f04a3:\n            local_a8 = pParse_00->nLabel + -1;" statement_identifier : (expression_statement "local_a8 = pParse_00->nLabel + -1;" (assignment_expression "local_a8 = pParse_00->nLabel + -1" identifier = (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal)) ;)) (expression_statement "pParse_00->nLabel = local_a8;" (assignment_expression "pParse_00->nLabel = local_a8" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38)" ( identifier , number_literal , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28);" (call_expression "sqlite3ExprCode(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28)" identifier (argument_list "(pParse_00,pTab_00->aCol[iVar22].pDflt,(int)pPVar28)" ( identifier , (field_expression "pTab_00->aCol[iVar22].pDflt" (subscript_expression "pTab_00->aCol[iVar22]" (field_expression "pTab_00->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier) , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0x33,(int)pPVar28,local_a8,(int)in_stack_ffffff38)" ( identifier , number_literal , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (goto_statement "goto LAB_000f00a7;" goto statement_identifier ;) })) (if_statement "if (uVar12 == 2) goto LAB_000f009f;" if (parenthesized_expression "(uVar12 == 2)" ( (binary_expression "uVar12 == 2" identifier == number_literal) )) (goto_statement "goto LAB_000f009f;" goto statement_identifier ;)) (if_statement "if (uVar12 < 3) {\n          if (uVar12 != 1) goto LAB_000f0025;\n        }\n        else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }" if (parenthesized_expression "(uVar12 < 3)" ( (binary_expression "uVar12 < 3" identifier < number_literal) )) (compound_statement "{\n          if (uVar12 != 1) goto LAB_000f0025;\n        }" { (if_statement "if (uVar12 != 1) goto LAB_000f0025;" if (parenthesized_expression "(uVar12 != 1)" ( (binary_expression "uVar12 != 1" identifier != number_literal) )) (goto_statement "goto LAB_000f0025;" goto statement_identifier ;)) }) (else_clause "else if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }" else (if_statement "if (uVar12 != 3) {\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }" if (parenthesized_expression "(uVar12 != 3)" ( (binary_expression "uVar12 != 3" identifier != number_literal) )) (compound_statement "{\n          if (uVar12 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);\n          goto LAB_000f0048;\n        }" { (if_statement "if (uVar12 == 5) goto LAB_000f04a3;" if (parenthesized_expression "(uVar12 == 5)" ( (binary_expression "uVar12 == 5" identifier == number_literal) )) (goto_statement "goto LAB_000f04a3;" goto statement_identifier ;)) (labeled_statement "LAB_000f0025:\n          sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0x32,(int)pPVar28,regOldData,(int)in_stack_ffffff38)" ( identifier , number_literal , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;) })))) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }))) (expression_statement "in_stack_ffffff40 = (Parse *)pCVar11->zName;" (assignment_expression "in_stack_ffffff40 = (Parse *)pCVar11->zName" identifier = (cast_expression "(Parse *)pCVar11->zName" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pCVar11->zName" identifier -> field_identifier))) ;) (expression_statement "pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName);" (assignment_expression "pcVar16 = sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName)" identifier = (call_expression "sqlite3MPrintf(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName)" identifier (argument_list "(db,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6dd5f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6dd5f)" ( (binary_expression "unaff_EDI + 0x6dd5f" identifier + number_literal) ))) , (field_expression "pTab_00->zName" identifier -> field_identifier) )))) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28);" (call_expression "sqlite3VdbeAddOp3(p_00,0x44,0x513,uVar12,(int)pPVar28)" identifier (argument_list "(p_00,0x44,0x513,uVar12,(int)pPVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_ffffff38 = pPVar28;" (assignment_expression "in_stack_ffffff38 = pPVar28" identifier = identifier) ;) (if_statement "if (p_00->db->mallocFailed == '\0') {\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }\n      else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar4 = p_00->nOp;\n        pOVar20 = p_00->aOp;\n        pOVar20[iVar4 + -1].p4type = -7;\n        pOVar20[iVar4 + -1].p4.p = pcVar16;\n      }" { (expression_statement "iVar4 = p_00->nOp;" (assignment_expression "iVar4 = p_00->nOp" identifier = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (expression_statement "pOVar20 = p_00->aOp;" (assignment_expression "pOVar20 = p_00->aOp" identifier = (field_expression "p_00->aOp" identifier -> field_identifier)) ;) (expression_statement "pOVar20[iVar4 + -1].p4type = -7;" (assignment_expression "pOVar20[iVar4 + -1].p4type = -7" (field_expression "pOVar20[iVar4 + -1].p4type" (subscript_expression "pOVar20[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ]) . field_identifier) = number_literal) ;) (expression_statement "pOVar20[iVar4 + -1].p4.p = pcVar16;" (assignment_expression "pOVar20[iVar4 + -1].p4.p = pcVar16" (field_expression "pOVar20[iVar4 + -1].p4.p" (field_expression "pOVar20[iVar4 + -1].p4" (subscript_expression "pOVar20[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ]) . field_identifier) . field_identifier) = identifier) ;) }) (else_clause "else if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }" else (if_statement "if (pcVar16 != (char *)0x0) {\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }" if (parenthesized_expression "(pcVar16 != (char *)0x0)" ( (binary_expression "pcVar16 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        in_stack_ffffff40 = (Parse *)0xf050f;\n        sqlite3DbFreeNN(p_00->db,pcVar16);\n        in_stack_ffffff38 = pPVar28;\n      }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf050f;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf050f" identifier = (cast_expression "(Parse *)0xf050f" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3DbFreeNN(p_00->db,pcVar16);" (call_expression "sqlite3DbFreeNN(p_00->db,pcVar16)" identifier (argument_list "(p_00->db,pcVar16)" ( (field_expression "p_00->db" identifier -> field_identifier) , identifier ))) ;) (expression_statement "in_stack_ffffff38 = pPVar28;" (assignment_expression "in_stack_ffffff38 = pPVar28" identifier = identifier) ;) })))) (if_statement "if (0 < p_00->nOp) {\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }" if (parenthesized_expression "(0 < p_00->nOp)" ( (binary_expression "0 < p_00->nOp" number_literal < (field_expression "p_00->nOp" identifier -> field_identifier)) )) (compound_statement "{\n        p_00->aOp[p_00->nOp + -1].p5 = 1;\n      }" { (expression_statement "p_00->aOp[p_00->nOp + -1].p5 = 1;" (assignment_expression "p_00->aOp[p_00->nOp + -1].p5 = 1" (field_expression "p_00->aOp[p_00->nOp + -1].p5" (subscript_expression "p_00->aOp[p_00->nOp + -1]" (field_expression "p_00->aOp" identifier -> field_identifier) [ (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) (if_statement "if (local_a8 == 0) goto LAB_000f0048;" if (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;)) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (expression_statement "in_stack_ffffff40 = (Parse *)0xf014b;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf014b" identifier = (cast_expression "(Parse *)0xf014b" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeResolveLabel(p_00,local_a8);" (call_expression "sqlite3VdbeResolveLabel(p_00,local_a8)" identifier (argument_list "(p_00,local_a8)" ( identifier , identifier ))) ;) }) while (parenthesized_expression "(iVar24 != iVar22)" ( (binary_expression "iVar24 != iVar22" identifier != identifier) )) ;) })) (labeled_statement "LAB_000f0158:\n  pEVar5 = pTab_00->pCheck;" statement_identifier : (expression_statement "pEVar5 = pTab_00->pCheck;" (assignment_expression "pEVar5 = pTab_00->pCheck" identifier = (field_expression "pTab_00->pCheck" identifier -> field_identifier)) ;)) (if_statement "if ((pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)) {\n    local_ac = 0;\n    pParse_00->iSelfTab = ~(uint)aRegIdx;\n    uVar23 = 2;\n    if (local_7b != 0xb) {\n      uVar23 = regNewData;\n    }\n    uVar23 = uVar23 & 0xff;\n    pEVar25 = pEVar5->a;\n    if (0 < pEVar5->nExpr) {\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }\n    pParse_00->iSelfTab = 0;\n  }" if (parenthesized_expression "((pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0))" ( (binary_expression "(pEVar5 != (ExprList *)0x0) && ((db->flags & 0x200) == 0)" (parenthesized_expression "(pEVar5 != (ExprList *)0x0)" ( (binary_expression "pEVar5 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((db->flags & 0x200) == 0)" ( (binary_expression "(db->flags & 0x200) == 0" (parenthesized_expression "(db->flags & 0x200)" ( (binary_expression "db->flags & 0x200" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    local_ac = 0;\n    pParse_00->iSelfTab = ~(uint)aRegIdx;\n    uVar23 = 2;\n    if (local_7b != 0xb) {\n      uVar23 = regNewData;\n    }\n    uVar23 = uVar23 & 0xff;\n    pEVar25 = pEVar5->a;\n    if (0 < pEVar5->nExpr) {\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }\n    pParse_00->iSelfTab = 0;\n  }" { (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) (expression_statement "pParse_00->iSelfTab = ~(uint)aRegIdx;" (assignment_expression "pParse_00->iSelfTab = ~(uint)aRegIdx" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = (unary_expression "~(uint)aRegIdx" ~ (cast_expression "(uint)aRegIdx" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar23 = 2;" (assignment_expression "uVar23 = 2" identifier = number_literal) ;) (if_statement "if (local_7b != 0xb) {\n      uVar23 = regNewData;\n    }" if (parenthesized_expression "(local_7b != 0xb)" ( (binary_expression "local_7b != 0xb" identifier != number_literal) )) (compound_statement "{\n      uVar23 = regNewData;\n    }" { (expression_statement "uVar23 = regNewData;" (assignment_expression "uVar23 = regNewData" identifier = identifier) ;) })) (expression_statement "uVar23 = uVar23 & 0xff;" (assignment_expression "uVar23 = uVar23 & 0xff" identifier = (binary_expression "uVar23 & 0xff" identifier & number_literal)) ;) (expression_statement "pEVar25 = pEVar5->a;" (assignment_expression "pEVar25 = pEVar5->a" identifier = (field_expression "pEVar5->a" identifier -> field_identifier)) ;) (if_statement "if (0 < pEVar5->nExpr) {\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }" if (parenthesized_expression "(0 < pEVar5->nExpr)" ( (binary_expression "0 < pEVar5->nExpr" number_literal < (field_expression "pEVar5->nExpr" identifier -> field_identifier)) )) (compound_statement "{\n      do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);\n    }" { (do_statement "do {\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      } while (local_ac < pEVar5->nExpr);" do (compound_statement "{\n        pPVar28 = (Parse *)pEVar25->pExpr;\n        uVar12 = 0;\n        if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        pEVar25 = pEVar25 + 1;\n      }" { (expression_statement "pPVar28 = (Parse *)pEVar25->pExpr;" (assignment_expression "pPVar28 = (Parse *)pEVar25->pExpr" identifier = (cast_expression "(Parse *)pEVar25->pExpr" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pEVar25->pExpr" identifier -> field_identifier))) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (_overrideError == (NameContext *)0x0) {\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }\n        else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }" if (parenthesized_expression "(_overrideError == (NameContext *)0x0)" ( (binary_expression "_overrideError == (NameContext *)0x0" identifier == (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;\n          pParse_00->nLabel = iVar24;\n          sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);\n          if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }\n          in_stack_ffffff40 = (Parse *)0xf0295;\n          sqlite3VdbeResolveLabel(p_00,iVar24);\n          in_stack_ffffff38 = pPVar28;\n        }" { (labeled_statement "LAB_000f023c:\n          iVar24 = pParse_00->nLabel + -1;" statement_identifier : (expression_statement "iVar24 = pParse_00->nLabel + -1;" (assignment_expression "iVar24 = pParse_00->nLabel + -1" identifier = (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal)) ;)) (expression_statement "pParse_00->nLabel = iVar24;" (assignment_expression "pParse_00->nLabel = iVar24" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10);" (call_expression "sqlite3ExprIfTrue(pParse_00,(Expr *)pPVar28,iVar24,0x10)" identifier (argument_list "(pParse_00,(Expr *)pPVar28,iVar24,0x10)" ( identifier , (cast_expression "(Expr *)pPVar28" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (if_statement "if (uVar23 == 4) {\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }\n          else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }" if (parenthesized_expression "(uVar23 == 4)" ( (binary_expression "uVar23 == 4" identifier == number_literal) )) (compound_statement "{\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);\n          }" { (expression_statement "sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28);" (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)pPVar28)" identifier (argument_list "(p_00,0xb,0,regOldData,(int)pPVar28)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) }) (else_clause "else {\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }" else (compound_statement "{\n            pcVar16 = pEVar25->zName;\n            if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }\n            if (uVar23 == 5) {\n              uVar23 = 2;\n            }\n            pPVar28 = (Parse *)0x0;\n            sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');\n          }" { (expression_statement "pcVar16 = pEVar25->zName;" (assignment_expression "pcVar16 = pEVar25->zName" identifier = (field_expression "pEVar25->zName" identifier -> field_identifier)) ;) (if_statement "if (pcVar16 == (char *)0x0) {\n              pcVar16 = pTab_00->zName;\n            }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar16 = pTab_00->zName;\n            }" { (expression_statement "pcVar16 = pTab_00->zName;" (assignment_expression "pcVar16 = pTab_00->zName" identifier = (field_expression "pTab_00->zName" identifier -> field_identifier)) ;) })) (if_statement "if (uVar23 == 5) {\n              uVar23 = 2;\n            }" if (parenthesized_expression "(uVar23 == 5)" ( (binary_expression "uVar23 == 5" identifier == number_literal) )) (compound_statement "{\n              uVar23 = 2;\n            }" { (expression_statement "uVar23 = 2;" (assignment_expression "uVar23 = 2" identifier = number_literal) ;) })) (expression_statement "pPVar28 = (Parse *)0x0;" (assignment_expression "pPVar28 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03');" (call_expression "sqlite3HaltConstraint(pParse_00,0x113,uVar23,pcVar16,'\0','\x03')" identifier (argument_list "(pParse_00,0x113,uVar23,pcVar16,'\0','\x03')" ( identifier , number_literal , identifier , identifier , (char_literal "'\0'" ' escape_sequence ') , (char_literal "'\x03'" ' escape_sequence ') ))) ;) }))) (expression_statement "in_stack_ffffff40 = (Parse *)0xf0295;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf0295" identifier = (cast_expression "(Parse *)0xf0295" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeResolveLabel(p_00,iVar24);" (call_expression "sqlite3VdbeResolveLabel(p_00,iVar24)" identifier (argument_list "(p_00,iVar24)" ( identifier , identifier ))) ;) (expression_statement "in_stack_ffffff38 = pPVar28;" (assignment_expression "in_stack_ffffff38 = pPVar28" identifier = identifier) ;) }) (else_clause "else {\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }" else (compound_statement "{\n          do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);\n          w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);\n          w.u.pNC = _overrideError;\n          if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }\n        }" { (do_statement "do {\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          } while (uVar12 < 0x18);" do (compound_statement "{\n            *(undefined4 *)((int)&w.pParse + uVar12) = 0;\n            uVar12 = uVar12 + 4;\n          }" { (expression_statement "*(undefined4 *)((int)&w.pParse + uVar12) = 0;" (assignment_expression "*(undefined4 *)((int)&w.pParse + uVar12) = 0" (pointer_expression "*(undefined4 *)((int)&w.pParse + uVar12)" * (cast_expression "(undefined4 *)((int)&w.pParse + uVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&w.pParse + uVar12)" ( (binary_expression "(int)&w.pParse + uVar12" (cast_expression "(int)&w.pParse" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&w.pParse" & (field_expression "w.pParse" identifier . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar12 = uVar12 + 4;" (assignment_expression "uVar12 = uVar12 + 4" identifier = (binary_expression "uVar12 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 < 0x18)" ( (binary_expression "uVar12 < 0x18" identifier < number_literal) )) ;) (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97);" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0xa9f97)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0xa9f97)" ( (binary_expression "unaff_EDI + -0xa9f97" identifier + number_literal) )))) ;) (expression_statement "w.u.pNC = _overrideError;" (assignment_expression "w.u.pNC = _overrideError" (field_expression "w.u.pNC" (field_expression "w.u" identifier . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pPVar28 == (Parse *)0x0) {\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }" if (parenthesized_expression "(pPVar28 == (Parse *)0x0)" ( (binary_expression "pPVar28 == (Parse *)0x0" identifier == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }\n          }" { (if_statement "if (cVar18 == '\0') {\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }" if (parenthesized_expression "(cVar18 == '\0')" ( (binary_expression "cVar18 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              bVar9 = 0;\n              goto LAB_000f0235;\n            }" { (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000f0235;" goto statement_identifier ;) })) }) (else_clause "else {\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }" else (compound_statement "{\n            in_stack_ffffff40 = (Parse *)0xf0222;\n            walkExpr(&w,(Expr *)pPVar28);\n            bVar9 = w.eCode;\n            if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }\n            if (bVar9 != 0) goto LAB_000f023c;\n          }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf0222;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf0222" identifier = (cast_expression "(Parse *)0xf0222" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "walkExpr(&w,(Expr *)pPVar28);" (call_expression "walkExpr(&w,(Expr *)pPVar28)" identifier (argument_list "(&w,(Expr *)pPVar28)" ( (pointer_expression "&w" & identifier) , (cast_expression "(Expr *)pPVar28" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "bVar9 = w.eCode;" (assignment_expression "bVar9 = w.eCode" identifier = (field_expression "w.eCode" identifier . field_identifier)) ;) (if_statement "if (cVar18 == '\0') {\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }" if (parenthesized_expression "(cVar18 == '\0')" ( (binary_expression "cVar18 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000f0235:\n              bVar9 = bVar9 & 0xfd;\n            }" { (labeled_statement "LAB_000f0235:\n              bVar9 = bVar9 & 0xfd;" statement_identifier : (expression_statement "bVar9 = bVar9 & 0xfd;" (assignment_expression "bVar9 = bVar9 & 0xfd" identifier = (binary_expression "bVar9 & 0xfd" identifier & number_literal)) ;)) })) (if_statement "if (bVar9 != 0) goto LAB_000f023c;" if (parenthesized_expression "(bVar9 != 0)" ( (binary_expression "bVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f023c;" goto statement_identifier ;)) }))) }))) (expression_statement "local_ac = local_ac + 1;" (assignment_expression "local_ac = local_ac + 1" identifier = (binary_expression "local_ac + 1" identifier + number_literal)) ;) (expression_statement "pEVar25 = pEVar25 + 1;" (assignment_expression "pEVar25 = pEVar25 + 1" identifier = (binary_expression "pEVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_ac < pEVar5->nExpr)" ( (binary_expression "local_ac < pEVar5->nExpr" identifier < (field_expression "pEVar5->nExpr" identifier -> field_identifier)) )) ;) })) (expression_statement "pParse_00->iSelfTab = 0;" (assignment_expression "pParse_00->iSelfTab = 0" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "bVar21 = (bool)(cVar18 != '\0' & bVar1);" (assignment_expression "bVar21 = (bool)(cVar18 != '\0' & bVar1)" identifier = (cast_expression "(bool)(cVar18 != '\0' & bVar1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(cVar18 != '\0' & bVar1)" ( (binary_expression "cVar18 != '\0' & bVar1" (binary_expression "cVar18 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) & identifier) )))) ;) (if_statement "if (ignoreDest == 0) {\n    local_88 = (Index *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar21) goto LAB_000f0dc0;\n    iVar24 = pParse_00->nLabel + -1;\n    pParse_00->nLabel = iVar24;\n    uVar23 = regNewData & 0xff;\n    if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }\n    else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }\nLAB_000f05be:\n    in_stack_ffffff40 = (Parse *)0xf05c7;\n    sqlite3VdbeResolveLabel(p_00,iVar24);\n    if (local_60 == 0) {\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }\n    local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n    iVar24 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar24 = p_00->nOp + -1;\n    }\n    pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n    if (p_00->db->mallocFailed == '\0') {\n      pOVar20 = p_00->aOp + iVar24;\n    }\n    pOVar20->p2 = p_00->nOp;\n    pIdx = pTab_00->pIndex;\n    if (pIdx != (Index *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (Upsert *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (Index *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    pIdx = pTab_00->pIndex;\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (pIdx == (Index *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar21 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" if (parenthesized_expression "(ignoreDest == 0)" ( (binary_expression "ignoreDest == 0" identifier == number_literal) )) (compound_statement "{\n    local_88 = (Index *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar21) goto LAB_000f0dc0;\n    iVar24 = pParse_00->nLabel + -1;\n    pParse_00->nLabel = iVar24;\n    uVar23 = regNewData & 0xff;\n    if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }\n    else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }\nLAB_000f05be:\n    in_stack_ffffff40 = (Parse *)0xf05c7;\n    sqlite3VdbeResolveLabel(p_00,iVar24);\n    if (local_60 == 0) {\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }\n    local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n    iVar24 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar24 = p_00->nOp + -1;\n    }\n    pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n    if (p_00->db->mallocFailed == '\0') {\n      pOVar20 = p_00->aOp + iVar24;\n    }\n    pOVar20->p2 = p_00->nOp;\n    pIdx = pTab_00->pIndex;\n    if (pIdx != (Index *)0x0) goto LAB_000f05ea;\n  }" { (expression_statement "local_88 = (Index *)0x0;" (assignment_expression "local_88 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000f0322:\n    if (!bVar21) goto LAB_000f0dc0;" statement_identifier : (if_statement "if (!bVar21) goto LAB_000f0dc0;" if (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) (goto_statement "goto LAB_000f0dc0;" goto statement_identifier ;))) (expression_statement "iVar24 = pParse_00->nLabel + -1;" (assignment_expression "iVar24 = pParse_00->nLabel + -1" identifier = (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse_00->nLabel = iVar24;" (assignment_expression "pParse_00->nLabel = iVar24" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar23 = regNewData & 0xff;" (assignment_expression "uVar23 = regNewData & 0xff" identifier = (binary_expression "regNewData & 0xff" identifier & number_literal)) ;) (if_statement "if ((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)) {\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }\n    else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }" if (parenthesized_expression "((local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb))" ( (binary_expression "(local_7b == 0xb) && (uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)" (parenthesized_expression "(local_7b == 0xb)" ( (binary_expression "local_7b == 0xb" identifier == number_literal) )) && (parenthesized_expression "(uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb)" ( (comma_expression "uVar23 = (uint)pTab_00->keyConf, uVar23 == 0xb" (assignment_expression "uVar23 = (uint)pTab_00->keyConf" identifier = (cast_expression "(uint)pTab_00->keyConf" ( (type_descriptor "uint" type_identifier) ) (field_expression "pTab_00->keyConf" identifier -> field_identifier))) , (binary_expression "uVar23 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\n      if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }\n      sqlite3RowidConstraint(pParse_00,2,pTab_00);\n      local_5c = 0;\n    }" { (if_statement "if ((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)) {\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }" if (parenthesized_expression "((ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0))" ( (binary_expression "(ignoreDest == 0) || (*(int *)(ignoreDest + 0x10) != 0)" (parenthesized_expression "(ignoreDest == 0)" ( (binary_expression "ignoreDest == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(ignoreDest + 0x10) != 0)" ( (binary_expression "*(int *)(ignoreDest + 0x10) != 0" (pointer_expression "*(int *)(ignoreDest + 0x10)" * (cast_expression "(int *)(ignoreDest + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ignoreDest + 0x10)" ( (binary_expression "ignoreDest + 0x10" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n        uVar23 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (iDataCur != 0) goto LAB_000f117a;\n      }" { (expression_statement "uVar23 = 2;" (assignment_expression "uVar23 = 2" identifier = number_literal) ;) (labeled_statement "LAB_000f0547:\n        local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (if_statement "if (iDataCur != 0) goto LAB_000f117a;" if (parenthesized_expression "(iDataCur != 0)" ( (binary_expression "iDataCur != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f117a;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }" else (compound_statement "{\nLAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);\n        if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }\n      }" { (labeled_statement "LAB_000f11cd:\n        if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }" statement_identifier : (if_statement "if (*(int *)(ignoreDest + 8) == 0) {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }\n        else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }" if (parenthesized_expression "(*(int *)(ignoreDest + 8) == 0)" ( (binary_expression "*(int *)(ignoreDest + 8) == 0" (pointer_expression "*(int *)(ignoreDest + 8)" * (cast_expression "(int *)(ignoreDest + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ignoreDest + 8)" ( (binary_expression "ignoreDest + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }\n          local_60 = 0;\n          uVar23 = 4;\n        }" { (if_statement "if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }" if (parenthesized_expression "(iDataCur == 0)" ( (binary_expression "iDataCur == 0" identifier == number_literal) )) (compound_statement "{\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            in_stack_ffffff38 = (Parse *)aRegIdx;\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            goto _L51879;\n          }" { (expression_statement "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));" (call_expression "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6ddab))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6ddab)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddab)" ( (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ))) ;) (expression_statement "in_stack_ffffff38 = (Parse *)aRegIdx;" (assignment_expression "in_stack_ffffff38 = (Parse *)aRegIdx" identifier = (cast_expression "(Parse *)aRegIdx" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);" (call_expression "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" identifier (argument_list "(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" ( identifier , number_literal , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (goto_statement "goto _L51879;" goto statement_identifier ;) })) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = 4;" (assignment_expression "uVar23 = 4" identifier = number_literal) ;) }) (else_clause "else {\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }" else (compound_statement "{\n          if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar23 = 6;\n          local_60 = 0;\n        }" { (if_statement "if (iDataCur == 0) {\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" if (parenthesized_expression "(iDataCur == 0)" ( (binary_expression "iDataCur == 0" identifier == number_literal) )) (compound_statement "{\n            sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n            sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n            in_stack_ffffff38 = pParse;\n            sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);\n_L51879:\n            local_60 = 0;\n            sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" { (expression_statement "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));" (call_expression "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6ddab))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6ddab)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddab)" ( (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ))) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);" (call_expression "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" identifier (argument_list "(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" ( identifier , number_literal , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_ffffff38 = pParse;" (assignment_expression "in_stack_ffffff38 = pParse" identifier = identifier) ;) (expression_statement "sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse);" (call_expression "sqlite3UpsertDoUpdate(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse)" identifier (argument_list "(pParse_00,(Upsert *)ignoreDest,pTab_00,(Index *)0x0,(int)pParse)" ( identifier , (cast_expression "(Upsert *)ignoreDest" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (labeled_statement "_L51879:\n            local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (expression_statement "sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,regOldData,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000f05be;" goto statement_identifier ;) })) (expression_statement "uVar23 = 6;" (assignment_expression "uVar23 = 6" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) })))) (labeled_statement "LAB_000f117a:\n        sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur);" (call_expression "sqlite3VdbeAddOp3(p_00,0x35,(int)aRegIdx,iVar24,iDataCur)" identifier (argument_list "(p_00,0x35,(int)aRegIdx,iVar24,iDataCur)" ( identifier , number_literal , (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;)) (if_statement "if (0 < p_00->nOp) {\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }" if (parenthesized_expression "(0 < p_00->nOp)" ( (binary_expression "0 < p_00->nOp" number_literal < (field_expression "p_00->nOp" identifier -> field_identifier)) )) (compound_statement "{\n          p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n        }" { (expression_statement "p_00->aOp[p_00->nOp + -1].p5 = 0x90;" (assignment_expression "p_00->aOp[p_00->nOp + -1].p5 = 0x90" (field_expression "p_00->aOp[p_00->nOp + -1].p5" (subscript_expression "p_00->aOp[p_00->nOp + -1]" (field_expression "p_00->aOp" identifier -> field_identifier) [ (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) }))) (expression_statement "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));" (call_expression "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6ddab))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6ddab)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddab)" ( (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ))) ;) (expression_statement "in_stack_ffffff38 = (Parse *)aRegIdx;" (assignment_expression "in_stack_ffffff38 = (Parse *)aRegIdx" identifier = (cast_expression "(Parse *)aRegIdx" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);" (call_expression "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" identifier (argument_list "(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" ( identifier , number_literal , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (uVar23 < 7) {\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }" if (parenthesized_expression "(uVar23 < 7)" ( (binary_expression "uVar23 < 7" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();\n        return;\n      }" { comment comment (expression_statement "(*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))();" (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71)" ( (binary_expression "*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI + 0xcaf71" (binary_expression "*(int *)(unaff_EDI + 0x71541 + uVar23 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x71541 + uVar23 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x71541 + uVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x71541 + uVar23 * 4)" ( (binary_expression "unaff_EDI + 0x71541 + uVar23 * 4" (binary_expression "unaff_EDI + 0x71541" identifier + number_literal) + (binary_expression "uVar23 * 4" identifier * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "sqlite3RowidConstraint(pParse_00,2,pTab_00);" (call_expression "sqlite3RowidConstraint(pParse_00,2,pTab_00)" identifier (argument_list "(pParse_00,2,pTab_00)" ( identifier , number_literal , identifier ))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }" else (compound_statement "{\n      if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;\n      if (uVar23 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (iDataCur != 0) goto LAB_000f117a;\n      sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));\n      in_stack_ffffff38 = (Parse *)aRegIdx;\n      sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);\n      if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }\n      pPVar28 = pParse_00->pToplevel;\n      if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }\n      pPVar28->isMultiWrite = '\x01';\n      in_stack_ffffff38 = (Parse *)0x5;\n      sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);\n      local_5c = 1;\n    }" { (if_statement "if ((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)) goto LAB_000f11cd;" if (parenthesized_expression "((ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0))" ( (binary_expression "(ignoreDest != 0) && (*(int *)(ignoreDest + 0x10) == 0)" (parenthesized_expression "(ignoreDest != 0)" ( (binary_expression "ignoreDest != 0" identifier != number_literal) )) && (parenthesized_expression "(*(int *)(ignoreDest + 0x10) == 0)" ( (binary_expression "*(int *)(ignoreDest + 0x10) == 0" (pointer_expression "*(int *)(ignoreDest + 0x10)" * (cast_expression "(int *)(ignoreDest + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ignoreDest + 0x10)" ( (binary_expression "ignoreDest + 0x10" identifier + number_literal) )))) == number_literal) ))) )) (goto_statement "goto LAB_000f11cd;" goto statement_identifier ;)) (if_statement "if (uVar23 != 5) goto LAB_000f0547;" if (parenthesized_expression "(uVar23 != 5)" ( (binary_expression "uVar23 != 5" identifier != number_literal) )) (goto_statement "goto LAB_000f0547;" goto statement_identifier ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (if_statement "if ((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)) {\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }" if (parenthesized_expression "((local_7b != 5) && (pTab_00->pIndex != (Index *)0x0))" ( (binary_expression "(local_7b != 5) && (pTab_00->pIndex != (Index *)0x0)" (parenthesized_expression "(local_7b != 5)" ( (binary_expression "local_7b != 5" identifier != number_literal) )) && (parenthesized_expression "(pTab_00->pIndex != (Index *)0x0)" ( (binary_expression "pTab_00->pIndex != (Index *)0x0" (field_expression "pTab_00->pIndex" identifier -> field_identifier) != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        local_60 = local_60 + 1;\n        sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);\n      }" { (expression_statement "local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);" (assignment_expression "local_60 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,0,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI);" (call_expression "sqlite3VdbeComment(p_00,&UNK_0006dd8e + unaff_EDI)" identifier (argument_list "(p_00,&UNK_0006dd8e + unaff_EDI)" ( identifier , (binary_expression "&UNK_0006dd8e + unaff_EDI" (pointer_expression "&UNK_0006dd8e" & identifier) + identifier) ))) ;) })) (if_statement "if (iDataCur != 0) goto LAB_000f117a;" if (parenthesized_expression "(iDataCur != 0)" ( (binary_expression "iDataCur != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f117a;" goto statement_identifier ;)) (expression_statement "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab));" (call_expression "sqlite3VdbeNoopComment(p_00,(char *)(unaff_EDI + 0x6ddab))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6ddab))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6ddab)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddab)" ( (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ))) ;) (expression_statement "in_stack_ffffff38 = (Parse *)aRegIdx;" (assignment_expression "in_stack_ffffff38 = (Parse *)aRegIdx" identifier = (cast_expression "(Parse *)aRegIdx" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx);" (call_expression "sqlite3VdbeAddOp3(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" identifier (argument_list "(p_00,0x1f,(int)pParse,iVar24,(int)aRegIdx)" ( identifier , number_literal , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if ((db->flags & 0x2000) == 0) {\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }\n      else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }" if (parenthesized_expression "((db->flags & 0x2000) == 0)" ( (binary_expression "(db->flags & 0x2000) == 0" (parenthesized_expression "(db->flags & 0x2000)" ( (binary_expression "db->flags & 0x2000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);\n        if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }\n      }" { (labeled_statement "LAB_000f124c:\n        iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);" statement_identifier : (expression_statement "iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0);" (assignment_expression "iVar22 = sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0)" identifier = (call_expression "sqlite3FkRequired((Parse *)pParse_00->db,pTab_00,(int *)0x0,0)" identifier (argument_list "((Parse *)pParse_00->db,pTab_00,(int *)0x0,0)" ( (cast_expression "(Parse *)pParse_00->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse_00->db" identifier -> field_identifier)) , identifier , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;)) (if_statement "if (iVar22 == 0) {\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }" if (parenthesized_expression "(iVar22 == 0)" ( (binary_expression "iVar22 == 0" identifier == number_literal) )) (compound_statement "{\n          sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);\n          sqlite3VdbeAppendP4(p_00,pTab_00,-6);\n          local_5c = 1;\n          if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }\n          goto LAB_000f05be;\n        }" { (expression_statement "sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38)" ( identifier , number_literal , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeAppendP4(p_00,pTab_00,-6);" (call_expression "sqlite3VdbeAppendP4(p_00,pTab_00,-6)" identifier (argument_list "(p_00,pTab_00,-6)" ( identifier , identifier , number_literal ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) (if_statement "if (pTab_00->pIndex != (Index *)0x0) {\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }" if (parenthesized_expression "(pTab_00->pIndex != (Index *)0x0)" ( (binary_expression "pTab_00->pIndex != (Index *)0x0" (field_expression "pTab_00->pIndex" identifier -> field_identifier) != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pPVar28 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }\n            pPVar28->isMultiWrite = '\x01';\n            in_stack_ffffff38 = (Parse *)0x0;\n            sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);\n            local_5c = 1;\n          }" { (expression_statement "pPVar28 = pParse_00->pToplevel;" (assignment_expression "pPVar28 = pParse_00->pToplevel" identifier = (field_expression "pParse_00->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar28 = pParse_00;\n            }" if (parenthesized_expression "(pParse_00->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse_00->pToplevel == (Parse *)0x0" (field_expression "pParse_00->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pPVar28 = pParse_00;\n            }" { (expression_statement "pPVar28 = pParse_00;" (assignment_expression "pPVar28 = pParse_00" identifier = identifier) ;) })) (expression_statement "pPVar28->isMultiWrite = '\x01';" (assignment_expression "pPVar28->isMultiWrite = '\x01'" (field_expression "pPVar28->isMultiWrite" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "in_stack_ffffff38 = (Parse *)0x0;" (assignment_expression "in_stack_ffffff38 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);" (call_expression "sqlite3GenerateRowIndexDelete(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1)" identifier (argument_list "(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1)" ( identifier , identifier , (cast_expression "(int)pParse" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pTab" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) })) (goto_statement "goto LAB_000f05be;" goto statement_identifier ;) })) }) (else_clause "else {\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }" else (compound_statement "{\n        in_stack_ffffff38 = (Parse *)0x0;\n        pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);\n        if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;\n      }" { (expression_statement "in_stack_ffffff38 = (Parse *)0x0;" (assignment_expression "in_stack_ffffff38 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0);" (assignment_expression "pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0)" identifier = (call_expression "sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0)" identifier (argument_list "(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0)" ( identifier , identifier , number_literal , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pTVar13 == (Trigger *)0x0) goto LAB_000f124c;" if (parenthesized_expression "(pTVar13 == (Trigger *)0x0)" ( (binary_expression "pTVar13 == (Trigger *)0x0" identifier == (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f124c;" goto statement_identifier ;)) }))) (expression_statement "pPVar28 = pParse_00->pToplevel;" (assignment_expression "pPVar28 = pParse_00->pToplevel" identifier = (field_expression "pParse_00->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse_00->pToplevel == (Parse *)0x0) {\n        pPVar28 = pParse_00;\n      }" if (parenthesized_expression "(pParse_00->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse_00->pToplevel == (Parse *)0x0" (field_expression "pParse_00->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pPVar28 = pParse_00;\n      }" { (expression_statement "pPVar28 = pParse_00;" (assignment_expression "pPVar28 = pParse_00" identifier = identifier) ;) })) (expression_statement "pPVar28->isMultiWrite = '\x01';" (assignment_expression "pPVar28->isMultiWrite = '\x01'" (field_expression "pPVar28->isMultiWrite" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "in_stack_ffffff38 = (Parse *)0x5;" (assignment_expression "in_stack_ffffff38 = (Parse *)0x5" identifier = (cast_expression "(Parse *)0x5" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c);" (call_expression "sqlite3GenerateRowDelete\n                (pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c)" identifier (argument_list "(pParse,pTab,(Trigger *)aRegIdx,1,0,5,1,0xff,(u8)in_stack_ffffff44,in_stack_ffffff48\n                 ,in_stack_ffffff4c)" ( identifier , identifier , (cast_expression "(Trigger *)aRegIdx" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , number_literal , number_literal , number_literal , number_literal , (cast_expression "(u8)in_stack_ffffff44" ( (type_descriptor "u8" type_identifier) ) identifier) , identifier , identifier ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) (labeled_statement "LAB_000f05be:\n    in_stack_ffffff40 = (Parse *)0xf05c7;" statement_identifier : (expression_statement "in_stack_ffffff40 = (Parse *)0xf05c7;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf05c7" identifier = (cast_expression "(Parse *)0xf05c7" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "sqlite3VdbeResolveLabel(p_00,iVar24);" (call_expression "sqlite3VdbeResolveLabel(p_00,iVar24)" identifier (argument_list "(p_00,iVar24)" ( identifier , identifier ))) ;) (if_statement "if (local_60 == 0) {\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (compound_statement "{\n      pIdx = pTab_00->pIndex;\n      goto joined_r0x000f05e4;\n    }" { (expression_statement "pIdx = pTab_00->pIndex;" (assignment_expression "pIdx = pTab_00->pIndex" identifier = (field_expression "pTab_00->pIndex" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x000f05e4;" goto statement_identifier ;) })) (expression_statement "local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);" (assignment_expression "local_48 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,0,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "iVar24 = local_60 + -1;" (assignment_expression "iVar24 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) (if_statement "if (local_60 + -1 < 0) {\n      iVar24 = p_00->nOp + -1;\n    }" if (parenthesized_expression "(local_60 + -1 < 0)" ( (binary_expression "local_60 + -1 < 0" (binary_expression "local_60 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n      iVar24 = p_00->nOp + -1;\n    }" { (expression_statement "iVar24 = p_00->nOp + -1;" (assignment_expression "iVar24 = p_00->nOp + -1" identifier = (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pOVar20 = (Op *)(unaff_EDI + 0xccb05);" (assignment_expression "pOVar20 = (Op *)(unaff_EDI + 0xccb05)" identifier = (cast_expression "(Op *)(unaff_EDI + 0xccb05)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xccb05)" ( (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal) )))) ;) (if_statement "if (p_00->db->mallocFailed == '\0') {\n      pOVar20 = p_00->aOp + iVar24;\n    }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pOVar20 = p_00->aOp + iVar24;\n    }" { (expression_statement "pOVar20 = p_00->aOp + iVar24;" (assignment_expression "pOVar20 = p_00->aOp + iVar24" identifier = (binary_expression "p_00->aOp + iVar24" (field_expression "p_00->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar20->p2 = p_00->nOp;" (assignment_expression "pOVar20->p2 = p_00->nOp" (field_expression "pOVar20->p2" identifier -> field_identifier) = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (expression_statement "pIdx = pTab_00->pIndex;" (assignment_expression "pIdx = pTab_00->pIndex" identifier = (field_expression "pTab_00->pIndex" identifier -> field_identifier)) ;) (if_statement "if (pIdx != (Index *)0x0) goto LAB_000f05ea;" if (parenthesized_expression "(pIdx != (Index *)0x0)" ( (binary_expression "pIdx != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f05ea;" goto statement_identifier ;)) }) (else_clause "else {\n    if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (Upsert *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (Index *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    pIdx = pTab_00->pIndex;\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (pIdx == (Index *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar21 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" else (compound_statement "{\n    if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (Upsert *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (Index *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    pIdx = pTab_00->pIndex;\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (pIdx == (Index *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar21 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" { (if_statement "if (*(int *)ignoreDest != 0) {\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }" if (parenthesized_expression "(*(int *)ignoreDest != 0)" ( (binary_expression "*(int *)ignoreDest != 0" (pointer_expression "*(int *)ignoreDest" * (cast_expression "(int *)ignoreDest" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )) (compound_statement "{\n      local_88 = *(Index **)(ignoreDest + 0x10);\n      local_58 = 0;\n      if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }\n      goto LAB_000f0322;\n    }" { (expression_statement "local_88 = *(Index **)(ignoreDest + 0x10);" (assignment_expression "local_88 = *(Index **)(ignoreDest + 0x10)" identifier = (pointer_expression "*(Index **)(ignoreDest + 0x10)" * (cast_expression "(Index **)(ignoreDest + 0x10)" ( (type_descriptor "Index **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(ignoreDest + 0x10)" ( (binary_expression "ignoreDest + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (if_statement "if (local_88 != (Index *)0x0) {\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }" if (parenthesized_expression "(local_88 != (Index *)0x0)" ( (binary_expression "local_88 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);\n        sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);\n      }" { (expression_statement "local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);" (assignment_expression "local_58 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,0,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71);" (assignment_expression "in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6dd71)" identifier = (cast_expression "(Parse *)(unaff_EDI + 0x6dd71)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6dd71)" ( (binary_expression "unaff_EDI + 0x6dd71" identifier + number_literal) )))) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38);" (call_expression "sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38)" identifier (argument_list "(p_00,(char *)in_stack_ffffff38)" ( identifier , (cast_expression "(char *)in_stack_ffffff38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (goto_statement "goto LAB_000f0322;" goto statement_identifier ;) })) (if_statement "if (bVar21) {\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }" if (parenthesized_expression "(bVar21)" ( identifier )) (compound_statement "{\n      local_7b = 4;\n      uVar23 = 4;\n      local_6c = (Upsert *)0x0;\n      local_58 = 0;\n      iVar24 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar24;\n      local_88 = (Index *)0x0;\n      goto LAB_000f0547;\n    }" { (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" identifier = number_literal) ;) (expression_statement "uVar23 = 4;" (assignment_expression "uVar23 = 4" identifier = number_literal) ;) (expression_statement "local_6c = (Upsert *)0x0;" (assignment_expression "local_6c = (Upsert *)0x0" identifier = (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "iVar24 = pParse_00->nLabel + -1;" (assignment_expression "iVar24 = pParse_00->nLabel + -1" identifier = (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse_00->nLabel = iVar24;" (assignment_expression "pParse_00->nLabel = iVar24" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "local_88 = (Index *)0x0;" (assignment_expression "local_88 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000f0547;" goto statement_identifier ;) })) (expression_statement "local_6c = (Upsert *)0x0;" (assignment_expression "local_6c = (Upsert *)0x0" identifier = (cast_expression "(Upsert *)0x0" ( (type_descriptor "Upsert *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" identifier = number_literal) ;) (expression_statement "local_88 = (Index *)0x0;" (assignment_expression "local_88 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000f0dc0:\n    local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (expression_statement "pIdx = pTab_00->pIndex;" (assignment_expression "pIdx = pTab_00->pIndex" identifier = (field_expression "pTab_00->pIndex" identifier -> field_identifier)) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x000f05e4:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (pIdx == (Index *)0x0) goto LAB_000f0b10;" if (parenthesized_expression "(pIdx == (Index *)0x0)" ( (binary_expression "pIdx == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f0b10;" goto statement_identifier ;)) (labeled_statement "LAB_000f05ea:\n    bVar21 = false;" statement_identifier : (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (do_statement "do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    } while (pIdx != (Index *)0x0);" do (compound_statement "{\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }\n      if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }\n      p1 = pIdx->zName;\n      pcVar16 = (char *)(unaff_EDI + 0x6dddd);\n      sqlite3VdbeNoopComment(p_00,pcVar16);\n      if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }\n      iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      pPVar28 = (Parse *)(iVar24 + 1);\n      if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);\n      in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);\n      sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);\n      if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }\n      pPVar29 = (Parse *)((int)&pTab->zName + local_9c);\n      in_stack_ffffff38 = pPVar28;\n      sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);\n      local_b0 = pPVar28;\n      if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }\n      if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }\n      if (local_b0 == pPVar28) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;\n      pParse_00->nRangeReg = local_78;\n      local_9c = local_9c + 1;\n      pParse_00->iRangeReg = (int)local_b0;\n      pIdx = pIdx->pNext;\n    }" { (while_statement "while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }" while (parenthesized_expression "(*(int *)(extraout_ECX + local_9c * 4) == 0)" ( (binary_expression "*(int *)(extraout_ECX + local_9c * 4) == 0" (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\nLAB_000f0608:\n        pIdx = pIdx->pNext;\n        local_9c = local_9c + 1;\n        if (pIdx == (Index *)0x0) goto LAB_000f0ab0;\n      }" { (labeled_statement "LAB_000f0608:\n        pIdx = pIdx->pNext;" statement_identifier : (expression_statement "pIdx = pIdx->pNext;" (assignment_expression "pIdx = pIdx->pNext" identifier = (field_expression "pIdx->pNext" identifier -> field_identifier)) ;)) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (if_statement "if (pIdx == (Index *)0x0) goto LAB_000f0ab0;" if (parenthesized_expression "(pIdx == (Index *)0x0)" ( (binary_expression "pIdx == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f0ab0;" goto statement_identifier ;)) })) (if_statement "if (pIdx == local_88) {\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }" if (parenthesized_expression "(pIdx == local_88)" ( (binary_expression "pIdx == local_88" identifier == identifier) )) (compound_statement "{\n        local_84 = (char *)(local_58 + 1);\n        local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);\n        sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_58) {\n          iVar24 = local_58;\n        }\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n        if (!bVar21) goto LAB_000f0d78;\n      }" { (expression_statement "local_84 = (char *)(local_58 + 1);" (assignment_expression "local_84 = (char *)(local_58 + 1)" identifier = (cast_expression "(char *)(local_58 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )))) ;) (expression_statement "local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38);" (assignment_expression "local_54 = sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,0,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,0,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , number_literal , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6));" (call_expression "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddc6))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6ddc6))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6ddc6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddc6)" ( (binary_expression "unaff_EDI + 0x6ddc6" identifier + number_literal) ))) ))) ;) (expression_statement "pOVar20 = (Op *)(unaff_EDI + 0xccb05);" (assignment_expression "pOVar20 = (Op *)(unaff_EDI + 0xccb05)" identifier = (cast_expression "(Op *)(unaff_EDI + 0xccb05)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xccb05)" ( (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal) )))) ;) (expression_statement "iVar24 = p_00->nOp + -1;" (assignment_expression "iVar24 = p_00->nOp + -1" identifier = (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < local_58) {\n          iVar24 = local_58;\n        }" if (parenthesized_expression "(-1 < local_58)" ( (binary_expression "-1 < local_58" number_literal < identifier) )) (compound_statement "{\n          iVar24 = local_58;\n        }" { (expression_statement "iVar24 = local_58;" (assignment_expression "iVar24 = local_58" identifier = identifier) ;) })) (if_statement "if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pOVar20 = p_00->aOp + iVar24;\n        }" { (expression_statement "pOVar20 = p_00->aOp + iVar24;" (assignment_expression "pOVar20 = p_00->aOp + iVar24" identifier = (binary_expression "p_00->aOp + iVar24" (field_expression "p_00->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar20->p2 = p_00->nOp;" (assignment_expression "pOVar20->p2 = p_00->nOp" (field_expression "pOVar20->p2" identifier -> field_identifier) = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (if_statement "if (!bVar21) goto LAB_000f0d78;" if (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) (goto_statement "goto LAB_000f0d78;" goto statement_identifier ;)) }) (else_clause "else {\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }" else (compound_statement "{\n        local_84 = (char *)(pParse_00->nLabel + -1);\n        pParse_00->nLabel = (int)local_84;\n        if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }\n      }" { (expression_statement "local_84 = (char *)(pParse_00->nLabel + -1);" (assignment_expression "local_84 = (char *)(pParse_00->nLabel + -1)" identifier = (cast_expression "(char *)(pParse_00->nLabel + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pParse_00->nLabel + -1)" ( (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pParse_00->nLabel = (int)local_84;" (assignment_expression "pParse_00->nLabel = (int)local_84" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((!bVar21) && (local_88 == (Index *)0x0)) {\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }" if (parenthesized_expression "((!bVar21) && (local_88 == (Index *)0x0))" ( (binary_expression "(!bVar21) && (local_88 == (Index *)0x0)" (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) && (parenthesized_expression "(local_88 == (Index *)0x0)" ( (binary_expression "local_88 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\nLAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;\n          sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);\n          bVar21 = true;\n        }" { (labeled_statement "LAB_000f0d78:\n          in_stack_ffffff40 = (Parse *)0xf0d8d;" statement_identifier : (expression_statement "in_stack_ffffff40 = (Parse *)0xf0d8d;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf0d8d" identifier = (cast_expression "(Parse *)0xf0d8d" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1);" (call_expression "sqlite3TableAffinity(p_00,pTab_00,(int)aRegIdx + 1)" identifier (argument_list "(p_00,pTab_00,(int)aRegIdx + 1)" ( identifier , identifier , (binary_expression "(int)aRegIdx + 1" (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ;) (expression_statement "bVar21 = true;" (assignment_expression "bVar21 = true" identifier = true) ;) })) }))) (expression_statement "p1 = pIdx->zName;" (assignment_expression "p1 = pIdx->zName" identifier = (field_expression "pIdx->zName" identifier -> field_identifier)) ;) (expression_statement "pcVar16 = (char *)(unaff_EDI + 0x6dddd);" (assignment_expression "pcVar16 = (char *)(unaff_EDI + 0x6dddd)" identifier = (cast_expression "(char *)(unaff_EDI + 0x6dddd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6dddd)" ( (binary_expression "unaff_EDI + 0x6dddd" identifier + number_literal) )))) ;) (expression_statement "sqlite3VdbeNoopComment(p_00,pcVar16);" (call_expression "sqlite3VdbeNoopComment(p_00,pcVar16)" identifier (argument_list "(p_00,pcVar16)" ( identifier , identifier ))) ;) (if_statement "if (pIdx->pPartIdxWhere != (Expr *)0x0) {\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }" if (parenthesized_expression "(pIdx->pPartIdxWhere != (Expr *)0x0)" ( (binary_expression "pIdx->pPartIdxWhere != (Expr *)0x0" (field_expression "pIdx->pPartIdxWhere" identifier -> field_identifier) != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);\n        psVar6 = pParse_00->db;\n        pParse_00->iSelfTab = ~(uint)aRegIdx;\n        if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }\n        pParse_00->iSelfTab = 0;\n      }" { (expression_statement "sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16);" (call_expression "sqlite3VdbeAddOp3(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16)" identifier (argument_list "(p_00,0x49,0,*(int *)(extraout_ECX + local_9c * 4),(int)pcVar16)" ( identifier , number_literal , number_literal , (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) )))) , (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "psVar6 = pParse_00->db;" (assignment_expression "psVar6 = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (expression_statement "pParse_00->iSelfTab = ~(uint)aRegIdx;" (assignment_expression "pParse_00->iSelfTab = ~(uint)aRegIdx" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = (unary_expression "~(uint)aRegIdx" ~ (cast_expression "(uint)aRegIdx" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (pIdx->pPartIdxWhere == (Expr *)0x0) {\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }\n        else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }" if (parenthesized_expression "(pIdx->pPartIdxWhere == (Expr *)0x0)" ( (binary_expression "pIdx->pPartIdxWhere == (Expr *)0x0" (field_expression "pIdx->pPartIdxWhere" identifier -> field_identifier) == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }\n        }" { (if_statement "if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }" if (parenthesized_expression "(psVar6->mallocFailed == '\0')" ( (binary_expression "psVar6->mallocFailed == '\0'" (field_expression "psVar6->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);\n          }" { (expression_statement "in_stack_ffffff40 = (Parse *)0x10;" (assignment_expression "in_stack_ffffff40 = (Parse *)0x10" identifier = (cast_expression "(Parse *)0x10" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p1 = local_84;" (assignment_expression "p1 = local_84" identifier = identifier) ;) (expression_statement "sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10);" (call_expression "sqlite3ExprIfFalse(pParse_00,(Expr *)0x0,(int)local_84,0x10)" identifier (argument_list "(pParse_00,(Expr *)0x0,(int)local_84,0x10)" ( identifier , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) })) }) (else_clause "else {\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }" else (compound_statement "{\n          in_stack_ffffff40 = (Parse *)0xf06be;\n          pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);\n          if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }\n          if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }\n        }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf06be;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf06be" identifier = (cast_expression "(Parse *)0xf06be" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44);" (assignment_expression "pEVar14 = exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44)" identifier = (call_expression "exprDup(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44)" identifier (argument_list "(psVar6,pIdx->pPartIdxWhere,0,in_stack_ffffff44)" ( identifier , (field_expression "pIdx->pPartIdxWhere" identifier -> field_identifier) , number_literal , identifier )))) ;) (if_statement "if (psVar6->mallocFailed == '\0') {\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }" if (parenthesized_expression "(psVar6->mallocFailed == '\0')" ( (binary_expression "psVar6->mallocFailed == '\0'" (field_expression "psVar6->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            in_stack_ffffff40 = (Parse *)0x10;\n            p1 = local_84;\n            sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);\n          }" { (expression_statement "in_stack_ffffff40 = (Parse *)0x10;" (assignment_expression "in_stack_ffffff40 = (Parse *)0x10" identifier = (cast_expression "(Parse *)0x10" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p1 = local_84;" (assignment_expression "p1 = local_84" identifier = identifier) ;) (expression_statement "sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10);" (call_expression "sqlite3ExprIfFalse(pParse_00,pEVar14,(int)local_84,0x10)" identifier (argument_list "(pParse_00,pEVar14,(int)local_84,0x10)" ( identifier , identifier , (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) })) (if_statement "if (pEVar14 != (Expr *)0x0) {\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }" if (parenthesized_expression "(pEVar14 != (Expr *)0x0)" ( (binary_expression "pEVar14 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            in_stack_ffffff40 = (Parse *)0xf06d7;\n            sqlite3ExprDeleteNN(psVar6,pEVar14);\n          }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf06d7;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf06d7" identifier = (cast_expression "(Parse *)0xf06d7" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ExprDeleteNN(psVar6,pEVar14);" (call_expression "sqlite3ExprDeleteNN(psVar6,pEVar14)" identifier (argument_list "(psVar6,pEVar14)" ( identifier , identifier ))) ;) })) }))) (expression_statement "pParse_00->iSelfTab = 0;" (assignment_expression "pParse_00->iSelfTab = 0" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "iVar24 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar24 = *(int *)(extraout_ECX + local_9c * 4)" identifier = (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) ))))) ;) (expression_statement "pPVar28 = (Parse *)(iVar24 + 1);" (assignment_expression "pPVar28 = (Parse *)(iVar24 + 1)" identifier = (cast_expression "(Parse *)(iVar24 + 1)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar24 + 1)" ( (binary_expression "iVar24 + 1" identifier + number_literal) )))) ;) (if_statement "if (pIdx->nColumn == 0) {\n        uVar23 = 0;\n      }\n      else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }" if (parenthesized_expression "(pIdx->nColumn == 0)" ( (binary_expression "pIdx->nColumn == 0" (field_expression "pIdx->nColumn" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        uVar23 = 0;\n      }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }" else (compound_statement "{\n        pPVar29 = (Parse *)0x0;\n        do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);\nLAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);\n      }" { (expression_statement "pPVar29 = (Parse *)0x0;" (assignment_expression "pPVar29 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        } while ((int)pPVar17 < (int)uVar23);" do (compound_statement "{\n          while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }\n          psVar6 = pParse_00->db;\n          pParse_00->iSelfTab = ~(uint)aRegIdx;\n          pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;\n          if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }\n          pParse_00->iSelfTab = 0;\n          pPVar17 = (Parse *)((int)&pPVar29->db + 1);\n          p1 = pIdx->zName;\n          in_stack_ffffff40 = pPVar29;\n          sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));\n          uVar23 = (uint)pIdx->nColumn;\n          pPVar29 = pPVar17;\n        }" { (while_statement "while( true ) {\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);\n            sVar2 = pIdx->aiColumn[(int)pPVar29];\n            iVar24 = (int)sVar2;\n            if (iVar24 == -2) break;\n            piVar19 = aRegIdx;\n            if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }\n            p1 = (char *)(unaff_EDI + 0x6cca1);\n            if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }\n            pPVar29 = (Parse *)((int)&pPVar29->db + 1);\n            sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));\n            uVar23 = (uint)pIdx->nColumn;\n            if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;\n          }" { (expression_statement "p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db);" (assignment_expression "p = (Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db)" identifier = (cast_expression "(Vdbe *)((int)&pPVar29->db + (int)&pPVar28->db)" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar29->db + (int)&pPVar28->db)" ( (binary_expression "(int)&pPVar29->db + (int)&pPVar28->db" (cast_expression "(int)&pPVar29->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar29->db" & (field_expression "pPVar29->db" identifier -> field_identifier))) + (cast_expression "(int)&pPVar28->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar28->db" & (field_expression "pPVar28->db" identifier -> field_identifier)))) )))) ;) (expression_statement "sVar2 = pIdx->aiColumn[(int)pPVar29];" (assignment_expression "sVar2 = pIdx->aiColumn[(int)pPVar29]" identifier = (subscript_expression "pIdx->aiColumn[(int)pPVar29]" (field_expression "pIdx->aiColumn" identifier -> field_identifier) [ (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "iVar24 = (int)sVar2;" (assignment_expression "iVar24 = (int)sVar2" identifier = (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar24 == -2) break;" if (parenthesized_expression "(iVar24 == -2)" ( (binary_expression "iVar24 == -2" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "piVar19 = aRegIdx;" (assignment_expression "piVar19 = aRegIdx" identifier = identifier) ;) (if_statement "if (iVar24 == -1) {\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }\n            else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }" if (parenthesized_expression "(iVar24 == -1)" ( (binary_expression "iVar24 == -1" identifier == number_literal) )) (compound_statement "{\n              uVar10 = 'P';\n              iVar22 = p_00->nOp;\n              if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;\nLAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);\n            }" { (expression_statement "uVar10 = 'P';" (assignment_expression "uVar10 = 'P'" identifier = (char_literal "'P'" ' character ')) ;) (expression_statement "iVar22 = p_00->nOp;" (assignment_expression "iVar22 = p_00->nOp" identifier = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (if_statement "if (iVar22 < p_00->nOpAlloc) goto LAB_000f0756;" if (parenthesized_expression "(iVar22 < p_00->nOpAlloc)" ( (binary_expression "iVar22 < p_00->nOpAlloc" identifier < (field_expression "p_00->nOpAlloc" identifier -> field_identifier)) )) (goto_statement "goto LAB_000f0756;" goto statement_identifier ;)) (labeled_statement "LAB_000f080d:\n              growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);" statement_identifier : (expression_statement "growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);" (call_expression "growOp3(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44)" identifier (argument_list "(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_ffffff40" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_ffffff44" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) }) (else_clause "else {\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }" else (compound_statement "{\n              if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }\n              iVar22 = p_00->nOp;\n              uVar10 = ~(byte)(sVar2 >> 7) + 0x50;\n              if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;\nLAB_000f0756:\n              p_00->nOp = iVar22 + 1;\n              pOVar20 = p_00->aOp + iVar22;\n              pOVar20->opcode = uVar10;\n              pOVar20->p5 = 0;\n              pOVar20->p1 = (int)piVar19;\n              pOVar20->p2 = (int)p;\n              pOVar20->p3 = 0;\n              (pOVar20->p4).i = 0;\n              pOVar20->p4type = '\0';\n              pOVar20->zComment = (char *)0x0;\n            }" { (if_statement "if (sVar2 != pTab_00->iPKey) {\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }" if (parenthesized_expression "(sVar2 != pTab_00->iPKey)" ( (binary_expression "sVar2 != pTab_00->iPKey" identifier != (field_expression "pTab_00->iPKey" identifier -> field_identifier)) )) (compound_statement "{\n                piVar19 = (int *)((int)aRegIdx + iVar24 + 1);\n              }" { (expression_statement "piVar19 = (int *)((int)aRegIdx + iVar24 + 1);" (assignment_expression "piVar19 = (int *)((int)aRegIdx + iVar24 + 1)" identifier = (cast_expression "(int *)((int)aRegIdx + iVar24 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)aRegIdx + iVar24 + 1)" ( (binary_expression "(int)aRegIdx + iVar24 + 1" (binary_expression "(int)aRegIdx + iVar24" (cast_expression "(int)aRegIdx" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) })) (expression_statement "iVar22 = p_00->nOp;" (assignment_expression "iVar22 = p_00->nOp" identifier = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (expression_statement "uVar10 = ~(byte)(sVar2 >> 7) + 0x50;" (assignment_expression "uVar10 = ~(byte)(sVar2 >> 7) + 0x50" identifier = (binary_expression "~(byte)(sVar2 >> 7) + 0x50" (unary_expression "~(byte)(sVar2 >> 7)" ~ (call_expression "(byte)(sVar2 >> 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(sVar2 >> 7)" ( (binary_expression "sVar2 >> 7" identifier >> number_literal) )))) + number_literal)) ;) (if_statement "if (p_00->nOpAlloc <= iVar22) goto LAB_000f080d;" if (parenthesized_expression "(p_00->nOpAlloc <= iVar22)" ( (binary_expression "p_00->nOpAlloc <= iVar22" (field_expression "p_00->nOpAlloc" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_000f080d;" goto statement_identifier ;)) (labeled_statement "LAB_000f0756:\n              p_00->nOp = iVar22 + 1;" statement_identifier : (expression_statement "p_00->nOp = iVar22 + 1;" (assignment_expression "p_00->nOp = iVar22 + 1" (field_expression "p_00->nOp" identifier -> field_identifier) = (binary_expression "iVar22 + 1" identifier + number_literal)) ;)) (expression_statement "pOVar20 = p_00->aOp + iVar22;" (assignment_expression "pOVar20 = p_00->aOp + iVar22" identifier = (binary_expression "p_00->aOp + iVar22" (field_expression "p_00->aOp" identifier -> field_identifier) + identifier)) ;) (expression_statement "pOVar20->opcode = uVar10;" (assignment_expression "pOVar20->opcode = uVar10" (field_expression "pOVar20->opcode" identifier -> field_identifier) = identifier) ;) (expression_statement "pOVar20->p5 = 0;" (assignment_expression "pOVar20->p5 = 0" (field_expression "pOVar20->p5" identifier -> field_identifier) = number_literal) ;) (expression_statement "pOVar20->p1 = (int)piVar19;" (assignment_expression "pOVar20->p1 = (int)piVar19" (field_expression "pOVar20->p1" identifier -> field_identifier) = (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pOVar20->p2 = (int)p;" (assignment_expression "pOVar20->p2 = (int)p" (field_expression "pOVar20->p2" identifier -> field_identifier) = (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pOVar20->p3 = 0;" (assignment_expression "pOVar20->p3 = 0" (field_expression "pOVar20->p3" identifier -> field_identifier) = number_literal) ;) (expression_statement "(pOVar20->p4).i = 0;" (assignment_expression "(pOVar20->p4).i = 0" (field_expression "(pOVar20->p4).i" (parenthesized_expression "(pOVar20->p4)" ( (field_expression "pOVar20->p4" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "pOVar20->p4type = '\0';" (assignment_expression "pOVar20->p4type = '\0'" (field_expression "pOVar20->p4type" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pOVar20->zComment = (char *)0x0;" (assignment_expression "pOVar20->zComment = (char *)0x0" (field_expression "pOVar20->zComment" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "p1 = (char *)(unaff_EDI + 0x6cca1);" (assignment_expression "p1 = (char *)(unaff_EDI + 0x6cca1)" identifier = (cast_expression "(char *)(unaff_EDI + 0x6cca1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6cca1)" ( (binary_expression "unaff_EDI + 0x6cca1" identifier + number_literal) )))) ;) (if_statement "if (-1 < iVar24) {\n              p1 = pTab_00->aCol[iVar24].zName;\n            }" if (parenthesized_expression "(-1 < iVar24)" ( (binary_expression "-1 < iVar24" number_literal < identifier) )) (compound_statement "{\n              p1 = pTab_00->aCol[iVar24].zName;\n            }" { (expression_statement "p1 = pTab_00->aCol[iVar24].zName;" (assignment_expression "p1 = pTab_00->aCol[iVar24].zName" identifier = (field_expression "pTab_00->aCol[iVar24].zName" (subscript_expression "pTab_00->aCol[iVar24]" (field_expression "pTab_00->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) })) (expression_statement "pPVar29 = (Parse *)((int)&pPVar29->db + 1);" (assignment_expression "pPVar29 = (Parse *)((int)&pPVar29->db + 1)" identifier = (cast_expression "(Parse *)((int)&pPVar29->db + 1)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar29->db + 1)" ( (binary_expression "(int)&pPVar29->db + 1" (cast_expression "(int)&pPVar29->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar29->db" & (field_expression "pPVar29->db" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a));" (call_expression "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6b66a))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6b66a))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6b66a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6b66a)" ( (binary_expression "unaff_EDI + 0x6b66a" identifier + number_literal) ))) ))) ;) (expression_statement "uVar23 = (uint)pIdx->nColumn;" (assignment_expression "uVar23 = (uint)pIdx->nColumn" identifier = (cast_expression "(uint)pIdx->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->nColumn" identifier -> field_identifier))) ;) (if_statement "if ((int)uVar23 <= (int)pPVar29) goto LAB_000f0926;" if (parenthesized_expression "((int)uVar23 <= (int)pPVar29)" ( (binary_expression "(int)uVar23 <= (int)pPVar29" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000f0926;" goto statement_identifier ;)) })) (expression_statement "psVar6 = pParse_00->db;" (assignment_expression "psVar6 = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (expression_statement "pParse_00->iSelfTab = ~(uint)aRegIdx;" (assignment_expression "pParse_00->iSelfTab = ~(uint)aRegIdx" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = (unary_expression "~(uint)aRegIdx" ~ (cast_expression "(uint)aRegIdx" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr;" (assignment_expression "pEVar14 = pIdx->aColExpr->a[(int)pPVar29].pExpr" identifier = (field_expression "pIdx->aColExpr->a[(int)pPVar29].pExpr" (subscript_expression "pIdx->aColExpr->a[(int)pPVar29]" (field_expression "pIdx->aColExpr->a" (field_expression "pIdx->aColExpr" identifier -> field_identifier) -> field_identifier) [ (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)) ;) (if_statement "if (pEVar14 == (Expr *)0x0) {\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }\n          else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }" if (parenthesized_expression "(pEVar14 == (Expr *)0x0)" ( (binary_expression "pEVar14 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }\n          }" { (if_statement "if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }" if (parenthesized_expression "(psVar6->mallocFailed == '\0')" ( (binary_expression "psVar6->mallocFailed == '\0'" (field_expression "psVar6->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);\n            }" { (expression_statement "sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p);" (call_expression "sqlite3ExprCode(pParse_00,(Expr *)0x0,(int)p)" identifier (argument_list "(pParse_00,(Expr *)0x0,(int)p)" ( identifier , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) }) (else_clause "else {\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }" else (compound_statement "{\n            pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);\n            if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }\n            if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }\n          }" { (expression_statement "pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44);" (assignment_expression "pEVar14 = exprDup(psVar6,pEVar14,0,in_stack_ffffff44)" identifier = (call_expression "exprDup(psVar6,pEVar14,0,in_stack_ffffff44)" identifier (argument_list "(psVar6,pEVar14,0,in_stack_ffffff44)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (psVar6->mallocFailed == '\0') {\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }" if (parenthesized_expression "(psVar6->mallocFailed == '\0')" ( (binary_expression "psVar6->mallocFailed == '\0'" (field_expression "psVar6->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              sqlite3ExprCode(pParse_00,pEVar14,(int)p);\n            }" { (expression_statement "sqlite3ExprCode(pParse_00,pEVar14,(int)p);" (call_expression "sqlite3ExprCode(pParse_00,pEVar14,(int)p)" identifier (argument_list "(pParse_00,pEVar14,(int)p)" ( identifier , identifier , (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })) (if_statement "if (pEVar14 != (Expr *)0x0) {\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }" if (parenthesized_expression "(pEVar14 != (Expr *)0x0)" ( (binary_expression "pEVar14 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sqlite3ExprDeleteNN(psVar6,pEVar14);\n            }" { (expression_statement "sqlite3ExprDeleteNN(psVar6,pEVar14);" (call_expression "sqlite3ExprDeleteNN(psVar6,pEVar14)" identifier (argument_list "(psVar6,pEVar14)" ( identifier , identifier ))) ;) })) }))) (expression_statement "pParse_00->iSelfTab = 0;" (assignment_expression "pParse_00->iSelfTab = 0" (field_expression "pParse_00->iSelfTab" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar17 = (Parse *)((int)&pPVar29->db + 1);" (assignment_expression "pPVar17 = (Parse *)((int)&pPVar29->db + 1)" identifier = (cast_expression "(Parse *)((int)&pPVar29->db + 1)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar29->db + 1)" ( (binary_expression "(int)&pPVar29->db + 1" (cast_expression "(int)&pPVar29->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar29->db" & (field_expression "pPVar29->db" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "p1 = pIdx->zName;" (assignment_expression "p1 = pIdx->zName" identifier = (field_expression "pIdx->zName" identifier -> field_identifier)) ;) (expression_statement "in_stack_ffffff40 = pPVar29;" (assignment_expression "in_stack_ffffff40 = pPVar29" identifier = identifier) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5));" (call_expression "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6ddf5))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6ddf5))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6ddf5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddf5)" ( (binary_expression "unaff_EDI + 0x6ddf5" identifier + number_literal) ))) ))) ;) (expression_statement "uVar23 = (uint)pIdx->nColumn;" (assignment_expression "uVar23 = (uint)pIdx->nColumn" identifier = (cast_expression "(uint)pIdx->nColumn" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->nColumn" identifier -> field_identifier))) ;) (expression_statement "pPVar29 = pPVar17;" (assignment_expression "pPVar29 = pPVar17" identifier = identifier) ;) }) while (parenthesized_expression "((int)pPVar17 < (int)uVar23)" ( (binary_expression "(int)pPVar17 < (int)uVar23" (cast_expression "(int)pPVar17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_000f0926:\n        iVar24 = *(int *)(extraout_ECX + local_9c * 4);" statement_identifier : (expression_statement "iVar24 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar24 = *(int *)(extraout_ECX + local_9c * 4)" identifier = (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) ))))) ;)) }))) (expression_statement "sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24);" (call_expression "sqlite3VdbeAddOp3(p_00,0x66,(int)pPVar28,uVar23,iVar24)" identifier (argument_list "(p_00,0x66,(int)pPVar28,uVar23,iVar24)" ( identifier , number_literal , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier ))) ;) (expression_statement "in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee);" (assignment_expression "in_stack_ffffff38 = (Parse *)(unaff_EDI + 0x6ddee)" identifier = (cast_expression "(Parse *)(unaff_EDI + 0x6ddee)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6ddee)" ( (binary_expression "unaff_EDI + 0x6ddee" identifier + number_literal) )))) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName);" (call_expression "sqlite3VdbeComment(p_00,(char *)in_stack_ffffff38,pIdx->zName)" identifier (argument_list "(p_00,(char *)in_stack_ffffff38,pIdx->zName)" ( identifier , (cast_expression "(char *)in_stack_ffffff38" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pIdx->zName" identifier -> field_identifier) ))) ;) (if_statement "if (((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)) {\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }" if (parenthesized_expression "(((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0))" ( (binary_expression "((bVar26 && cVar18 == '\0') && (local_80 == pIdx)) ||\n         (uVar23 = (uint)pIdx->onError, uVar23 == 0)" (parenthesized_expression "((bVar26 && cVar18 == '\0') && (local_80 == pIdx))" ( (binary_expression "(bVar26 && cVar18 == '\0') && (local_80 == pIdx)" (parenthesized_expression "(bVar26 && cVar18 == '\0')" ( (binary_expression "bVar26 && cVar18 == '\0'" identifier && (binary_expression "cVar18 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) && (parenthesized_expression "(local_80 == pIdx)" ( (binary_expression "local_80 == pIdx" identifier == identifier) ))) )) || (parenthesized_expression "(uVar23 = (uint)pIdx->onError, uVar23 == 0)" ( (comma_expression "uVar23 = (uint)pIdx->onError, uVar23 == 0" (assignment_expression "uVar23 = (uint)pIdx->onError" identifier = (cast_expression "(uint)pIdx->onError" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->onError" identifier -> field_identifier))) , (binary_expression "uVar23 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        in_stack_ffffff40 = (Parse *)0xf0c23;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n        goto LAB_000f0608;\n      }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf0c23;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf0c23" identifier = (cast_expression "(Parse *)0xf0c23" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeResolveLabel(p_00,(int)local_84);" (call_expression "sqlite3VdbeResolveLabel(p_00,(int)local_84)" identifier (argument_list "(p_00,(int)local_84)" ( identifier , (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;) })) (if_statement "if (local_7b == 0xb) {\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }\n      else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }" if (parenthesized_expression "(local_7b == 0xb)" ( (binary_expression "local_7b == 0xb" identifier == number_literal) )) (compound_statement "{\n        if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }\n        if (pIdx != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;\n        bVar8 = bVar26;\n      }" { (if_statement "if (uVar23 == 0xb) {\n          uVar23 = 2;\n        }" if (parenthesized_expression "(uVar23 == 0xb)" ( (binary_expression "uVar23 == 0xb" identifier == number_literal) )) (compound_statement "{\n          uVar23 = 2;\n        }" { (expression_statement "uVar23 = 2;" (assignment_expression "uVar23 = 2" identifier = number_literal) ;) })) (if_statement "if (pIdx != local_88) goto LAB_000f09ad;" if (parenthesized_expression "(pIdx != local_88)" ( (binary_expression "pIdx != local_88" identifier != identifier) )) (goto_statement "goto LAB_000f09ad;" goto statement_identifier ;)) (labeled_statement "LAB_000f0c5d:\n        uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;" statement_identifier : (expression_statement "uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6;" (assignment_expression "uVar23 = (-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6" identifier = (binary_expression "(-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe)" ( (binary_expression "-(uint)(local_6c->pUpsertSet == (ExprList *)0x0) & 0xfffffffe" (unary_expression "-(uint)(local_6c->pUpsertSet == (ExprList *)0x0)" - (call_expression "(uint)(local_6c->pUpsertSet == (ExprList *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_6c->pUpsertSet == (ExprList *)0x0)" ( (binary_expression "local_6c->pUpsertSet == (ExprList *)0x0" (field_expression "local_6c->pUpsertSet" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) & number_literal) )) + number_literal)) ;)) (expression_statement "bVar8 = bVar26;" (assignment_expression "bVar8 = bVar26" identifier = identifier) ;) }) (else_clause "else {\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }" else (compound_statement "{\n        uVar23 = (uint)local_7b;\n        if (pIdx == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;\n      }" { (expression_statement "uVar23 = (uint)local_7b;" (assignment_expression "uVar23 = (uint)local_7b" identifier = (cast_expression "(uint)local_7b" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pIdx == local_88) goto LAB_000f0c5d;" if (parenthesized_expression "(pIdx == local_88)" ( (binary_expression "pIdx == local_88" identifier == identifier) )) (goto_statement "goto LAB_000f0c5d;" goto statement_identifier ;)) (labeled_statement "LAB_000f09ad:\n        bVar8 = uVar23 == 5 || bVar26;" statement_identifier : (expression_statement "bVar8 = uVar23 == 5 || bVar26;" (assignment_expression "bVar8 = uVar23 == 5 || bVar26" identifier = (binary_expression "uVar23 == 5 || bVar26" (binary_expression "uVar23 == 5" identifier == number_literal) || identifier)) ;)) }))) (expression_statement "pPVar29 = (Parse *)((int)&pTab->zName + local_9c);" (assignment_expression "pPVar29 = (Parse *)((int)&pTab->zName + local_9c)" identifier = (cast_expression "(Parse *)((int)&pTab->zName + local_9c)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pTab->zName + local_9c)" ( (binary_expression "(int)&pTab->zName + local_9c" (cast_expression "(int)&pTab->zName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pTab->zName" & (field_expression "pTab->zName" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "in_stack_ffffff38 = pPVar28;" (assignment_expression "in_stack_ffffff38 = pPVar28" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol);" (call_expression "sqlite3VdbeAddOp4Int(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol)" identifier (argument_list "(p_00,0x1b,(int)pPVar29,(int)local_84,(int)pPVar28,(uint)pIdx->nKeyCol)" ( identifier , number_literal , (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)pPVar28" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(uint)pIdx->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIdx->nKeyCol" identifier -> field_identifier)) ))) ;) (expression_statement "local_b0 = pPVar28;" (assignment_expression "local_b0 = pPVar28" identifier = identifier) ;) (if_statement "if (local_80 != pIdx) {\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }" if (parenthesized_expression "(local_80 != pIdx)" ( (binary_expression "local_80 != pIdx" identifier != identifier) )) (compound_statement "{\n        in_stack_ffffff40 = (Parse *)0xf0a00;\n        local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);\n      }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf0a00;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf0a00" identifier = (cast_expression "(Parse *)0xf0a00" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78);" (assignment_expression "local_b0 = (Parse *)sqlite3GetTempRange(pParse_00,local_78)" identifier = (cast_expression "(Parse *)sqlite3GetTempRange(pParse_00,local_78)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3GetTempRange(pParse_00,local_78)" identifier (argument_list "(pParse_00,local_78)" ( identifier , identifier ))))) ;) })) (if_statement "if (bVar8) {\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n        if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }\n      }" { (if_statement "if ((pTab_00->tabFlags & 0x20) == 0) {\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }" if (parenthesized_expression "((pTab_00->tabFlags & 0x20) == 0)" ( (binary_expression "(pTab_00->tabFlags & 0x20) == 0" (parenthesized_expression "(pTab_00->tabFlags & 0x20)" ( (binary_expression "pTab_00->tabFlags & 0x20" (field_expression "pTab_00->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);\n          if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }\n        }" { (expression_statement "sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0x87,(int)pPVar29,(int)local_b0,(int)in_stack_ffffff38)" ( identifier , number_literal , (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (iDataCur != 0) {\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }" if (parenthesized_expression "(iDataCur != 0)" ( (binary_expression "iDataCur != 0" identifier != number_literal) )) (compound_statement "{\n            in_stack_ffffff38 = (Parse *)iDataCur;\n            sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);\n            if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }\n          }" { (expression_statement "in_stack_ffffff38 = (Parse *)iDataCur;" (assignment_expression "in_stack_ffffff38 = (Parse *)iDataCur" identifier = (cast_expression "(Parse *)iDataCur" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur);" (call_expression "sqlite3VdbeAddOp3(p_00,0x35,(int)local_b0,(int)local_84,iDataCur)" identifier (argument_list "(p_00,0x35,(int)local_b0,(int)local_84,iDataCur)" ( identifier , number_literal , (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) (if_statement "if (0 < p_00->nOp) {\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }" if (parenthesized_expression "(0 < p_00->nOp)" ( (binary_expression "0 < p_00->nOp" number_literal < (field_expression "p_00->nOp" identifier -> field_identifier)) )) (compound_statement "{\n              p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n            }" { (expression_statement "p_00->aOp[p_00->nOp + -1].p5 = 0x90;" (assignment_expression "p_00->aOp[p_00->nOp + -1].p5 = 0x90" (field_expression "p_00->aOp[p_00->nOp + -1].p5" (subscript_expression "p_00->aOp[p_00->nOp + -1]" (field_expression "p_00->aOp" identifier -> field_identifier) [ (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) })) }) (else_clause "else {\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }" else (compound_statement "{\n          if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }\n          if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }\n        }" { (if_statement "if ((local_80 != pIdx) && (local_80->nKeyCol != 0)) {\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }" if (parenthesized_expression "((local_80 != pIdx) && (local_80->nKeyCol != 0))" ( (binary_expression "(local_80 != pIdx) && (local_80->nKeyCol != 0)" (parenthesized_expression "(local_80 != pIdx)" ( (binary_expression "local_80 != pIdx" identifier != identifier) )) && (parenthesized_expression "(local_80->nKeyCol != 0)" ( (binary_expression "local_80->nKeyCol != 0" (field_expression "local_80->nKeyCol" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n            iVar24 = 0;\n            do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);\n          }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            } while (iVar22 < (int)(uint)local_80->nKeyCol);" do (compound_statement "{\n              if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }\n              in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);\n              iVar22 = iVar24 + 1;\n              sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);\n              sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);\n              iVar24 = iVar22;\n            }" { (if_statement "if (pIdx->nColumn == 0) {\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }\n              else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }" if (parenthesized_expression "(pIdx->nColumn == 0)" ( (binary_expression "pIdx->nColumn == 0" (field_expression "pIdx->nColumn" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_000f0f72:\n                uVar12 = 0xffffffff;\n              }" { (labeled_statement "LAB_000f0f72:\n                uVar12 = 0xffffffff;" statement_identifier : (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }" else (compound_statement "{\n                uVar12 = 0;\n                if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }\n              }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (local_80->aiColumn[iVar24] != *pIdx->aiColumn) {\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }" if (parenthesized_expression "(local_80->aiColumn[iVar24] != *pIdx->aiColumn)" ( (binary_expression "local_80->aiColumn[iVar24] != *pIdx->aiColumn" (subscript_expression "local_80->aiColumn[iVar24]" (field_expression "local_80->aiColumn" identifier -> field_identifier) [ identifier ]) != (pointer_expression "*pIdx->aiColumn" * (field_expression "pIdx->aiColumn" identifier -> field_identifier))) )) (compound_statement "{\n                  do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);\n                  uVar12 = (uint)(short)uVar12;\n                }" { (do_statement "do {\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  } while (local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]);" do (compound_statement "{\n                    uVar12 = uVar12 + 1;\n                    if (pIdx->nColumn == uVar12) goto LAB_000f0f72;\n                  }" { (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (if_statement "if (pIdx->nColumn == uVar12) goto LAB_000f0f72;" if (parenthesized_expression "(pIdx->nColumn == uVar12)" ( (binary_expression "pIdx->nColumn == uVar12" (field_expression "pIdx->nColumn" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_000f0f72;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12])" ( (binary_expression "local_80->aiColumn[iVar24] != pIdx->aiColumn[uVar12]" (subscript_expression "local_80->aiColumn[iVar24]" (field_expression "local_80->aiColumn" identifier -> field_identifier) [ identifier ]) != (subscript_expression "pIdx->aiColumn[uVar12]" (field_expression "pIdx->aiColumn" identifier -> field_identifier) [ identifier ])) )) ;) (expression_statement "uVar12 = (uint)(short)uVar12;" (assignment_expression "uVar12 = (uint)(short)uVar12" identifier = (cast_expression "(uint)(short)uVar12" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)uVar12" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) }))) (expression_statement "in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24);" (assignment_expression "in_stack_ffffff38 = (Parse *)((int)&local_b0->db + iVar24)" identifier = (cast_expression "(Parse *)((int)&local_b0->db + iVar24)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_b0->db + iVar24)" ( (binary_expression "(int)&local_b0->db + iVar24" (cast_expression "(int)&local_b0->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_b0->db" & (field_expression "local_b0->db" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "iVar22 = iVar24 + 1;" (assignment_expression "iVar22 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0x5a,(int)pPVar29,uVar12,(int)in_stack_ffffff38)" ( identifier , number_literal , (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName);" (call_expression "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName)" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6dd5f),pTab_00->zName,\n                                 pTab_00->aCol[local_80->aiColumn[iVar24]].zName)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6dd5f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6dd5f)" ( (binary_expression "unaff_EDI + 0x6dd5f" identifier + number_literal) ))) , (field_expression "pTab_00->zName" identifier -> field_identifier) , (field_expression "pTab_00->aCol[local_80->aiColumn[iVar24]].zName" (subscript_expression "pTab_00->aCol[local_80->aiColumn[iVar24]]" (field_expression "pTab_00->aCol" identifier -> field_identifier) [ (subscript_expression "local_80->aiColumn[iVar24]" (field_expression "local_80->aiColumn" identifier -> field_identifier) [ identifier ]) ]) . field_identifier) ))) ;) (expression_statement "iVar24 = iVar22;" (assignment_expression "iVar24 = iVar22" identifier = identifier) ;) }) while (parenthesized_expression "(iVar22 < (int)(uint)local_80->nKeyCol)" ( (binary_expression "iVar22 < (int)(uint)local_80->nKeyCol" identifier < (cast_expression "(int)(uint)local_80->nKeyCol" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_80->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_80->nKeyCol" identifier -> field_identifier)))) )) ;) })) (if_statement "if (iDataCur != 0) {\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }" if (parenthesized_expression "(iDataCur != 0)" ( (binary_expression "iDataCur != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);\n            pPVar17 = local_b0;\n            if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }\n            if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }\n          }" { (expression_statement "pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol);" (assignment_expression "pcVar16 = (char *)(p_00->nOp + (uint)local_80->nKeyCol)" identifier = (cast_expression "(char *)(p_00->nOp + (uint)local_80->nKeyCol)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_00->nOp + (uint)local_80->nKeyCol)" ( (binary_expression "p_00->nOp + (uint)local_80->nKeyCol" (field_expression "p_00->nOp" identifier -> field_identifier) + (cast_expression "(uint)local_80->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_80->nKeyCol" identifier -> field_identifier))) )))) ;) (expression_statement "pPVar17 = local_b0;" (assignment_expression "pPVar17 = local_b0" identifier = identifier) ;) (if_statement "if ((pIdx->field_0x37 & 3) == 2) {\n              pPVar17 = pPVar28;\n            }" if (parenthesized_expression "((pIdx->field_0x37 & 3) == 2)" ( (binary_expression "(pIdx->field_0x37 & 3) == 2" (parenthesized_expression "(pIdx->field_0x37 & 3)" ( (binary_expression "pIdx->field_0x37 & 3" (field_expression "pIdx->field_0x37" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              pPVar17 = pPVar28;\n            }" { (expression_statement "pPVar17 = pPVar28;" (assignment_expression "pPVar17 = pPVar28" identifier = identifier) ;) })) (if_statement "if (local_80->nKeyCol != 0) {\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }" if (parenthesized_expression "(local_80->nKeyCol != 0)" ( (binary_expression "local_80->nKeyCol != 0" (field_expression "local_80->nKeyCol" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n              local_94 = 0x34;\n              iVar24 = 0;\n              do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);\n            }" { (expression_statement "local_94 = 0x34;" (assignment_expression "local_94 = 0x34" identifier = number_literal) ;) (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              } while (iVar24 < (int)(uint)local_80->nKeyCol);" do (compound_statement "{\n                while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }\n                iVar24 = iVar24 + 1;\n              }" { (while_statement "while( true ) {\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  in_stack_ffffff40 = (Parse *)0xf104f;\n                  zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);\n                  if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }\n                  in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);\n                  iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);\n                  sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);\n                  if (p_00->nOp < 1) break;\n                  iVar24 = iVar24 + 1;\n                  p_00->aOp[p_00->nOp + -1].p5 = 0x90;\n                  if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;\n                }" { (expression_statement "in_stack_ffffff40 = (Parse *)0xf104f;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf104f" identifier = (cast_expression "(Parse *)0xf104f" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24]);" (assignment_expression "zP4 = sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24])" identifier = (call_expression "sqlite3LocateCollSeq(pParse_00,local_80->azColl[iVar24])" identifier (argument_list "(pParse_00,local_80->azColl[iVar24])" ( identifier , (subscript_expression "local_80->azColl[iVar24]" (field_expression "local_80->azColl" identifier -> field_identifier) [ identifier ]) )))) ;) (if_statement "if (local_80->nKeyCol - 1 == iVar24) {\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }" if (parenthesized_expression "(local_80->nKeyCol - 1 == iVar24)" ( (binary_expression "local_80->nKeyCol - 1 == iVar24" (binary_expression "local_80->nKeyCol - 1" (field_expression "local_80->nKeyCol" identifier -> field_identifier) - number_literal) == identifier) )) (compound_statement "{\n                    pcVar16 = local_84;\n                    local_94 = 0x35;\n                  }" { (expression_statement "pcVar16 = local_84;" (assignment_expression "pcVar16 = local_84" identifier = identifier) ;) (expression_statement "local_94 = 0x35;" (assignment_expression "local_94 = 0x35" identifier = number_literal) ;) })) (expression_statement "in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24);" (assignment_expression "in_stack_ffffff38 = (Parse *)((int)&pPVar17->db + iVar24)" identifier = (cast_expression "(Parse *)((int)&pPVar17->db + iVar24)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar17->db + iVar24)" ( (binary_expression "(int)&pPVar17->db + iVar24" (cast_expression "(int)&pPVar17->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar17->db" & (field_expression "pPVar17->db" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38);" (assignment_expression "iVar22 = sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,local_94,\n                                             (int)local_80->aiColumn[iVar24] + iDataCur + 1,\n                                             (int)pcVar16,(int)in_stack_ffffff38)" ( identifier , identifier , (binary_expression "(int)local_80->aiColumn[iVar24] + iDataCur + 1" (binary_expression "(int)local_80->aiColumn[iVar24] + iDataCur" (cast_expression "(int)local_80->aiColumn[iVar24]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_80->aiColumn[iVar24]" (field_expression "local_80->aiColumn" identifier -> field_identifier) [ identifier ])) + identifier) + number_literal) , (cast_expression "(int)pcVar16" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2);" (call_expression "sqlite3VdbeChangeP4(p_00,iVar22,(char *)zP4,-2)" identifier (argument_list "(p_00,iVar22,(char *)zP4,-2)" ( identifier , identifier , (cast_expression "(char *)zP4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (if_statement "if (p_00->nOp < 1) break;" if (parenthesized_expression "(p_00->nOp < 1)" ( (binary_expression "p_00->nOp < 1" (field_expression "p_00->nOp" identifier -> field_identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (expression_statement "p_00->aOp[p_00->nOp + -1].p5 = 0x90;" (assignment_expression "p_00->aOp[p_00->nOp + -1].p5 = 0x90" (field_expression "p_00->aOp[p_00->nOp + -1].p5" (subscript_expression "p_00->aOp[p_00->nOp + -1]" (field_expression "p_00->aOp" identifier -> field_identifier) [ (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) (if_statement "if ((int)(uint)local_80->nKeyCol <= iVar24) goto LAB_000f0a30;" if (parenthesized_expression "((int)(uint)local_80->nKeyCol <= iVar24)" ( (binary_expression "(int)(uint)local_80->nKeyCol <= iVar24" (cast_expression "(int)(uint)local_80->nKeyCol" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_80->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_80->nKeyCol" identifier -> field_identifier))) <= identifier) )) (goto_statement "goto LAB_000f0a30;" goto statement_identifier ;)) })) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar24 < (int)(uint)local_80->nKeyCol)" ( (binary_expression "iVar24 < (int)(uint)local_80->nKeyCol" identifier < (cast_expression "(int)(uint)local_80->nKeyCol" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)local_80->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_80->nKeyCol" identifier -> field_identifier)))) )) ;) })) })) }))) })) (labeled_statement "LAB_000f0a30:\n      if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }" statement_identifier : (if_statement "if (uVar23 == 4) {\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }\n      else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }" if (parenthesized_expression "(uVar23 == 4)" ( (binary_expression "uVar23 == 4" identifier == number_literal) )) (compound_statement "{\nLAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);\n        if (pIdx != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);\n        iVar24 = p_00->nOp + -1;\n        if (-1 < local_54) {\n          iVar24 = local_54;\n        }\n        pOVar20 = (Op *)(unaff_EDI + 0xccb05);\n        if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }\n        pOVar20->p2 = p_00->nOp;\n      }" { (labeled_statement "LAB_000f0b65:\n        sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,regOldData,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,regOldData,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) (if_statement "if (pIdx != local_88) goto LAB_000f0a5e;" if (parenthesized_expression "(pIdx != local_88)" ( (binary_expression "pIdx != local_88" identifier != identifier) )) (goto_statement "goto LAB_000f0a5e;" goto statement_identifier ;)) (labeled_statement "LAB_000f0b8a:\n        sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);" statement_identifier : (expression_statement "sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,local_58 + 1,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , (binary_expression "local_58 + 1" identifier + number_literal) , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;)) (expression_statement "iVar24 = p_00->nOp + -1;" (assignment_expression "iVar24 = p_00->nOp + -1" identifier = (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < local_54) {\n          iVar24 = local_54;\n        }" if (parenthesized_expression "(-1 < local_54)" ( (binary_expression "-1 < local_54" number_literal < identifier) )) (compound_statement "{\n          iVar24 = local_54;\n        }" { (expression_statement "iVar24 = local_54;" (assignment_expression "iVar24 = local_54" identifier = identifier) ;) })) (expression_statement "pOVar20 = (Op *)(unaff_EDI + 0xccb05);" (assignment_expression "pOVar20 = (Op *)(unaff_EDI + 0xccb05)" identifier = (cast_expression "(Op *)(unaff_EDI + 0xccb05)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xccb05)" ( (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal) )))) ;) (if_statement "if (p_00->db->mallocFailed == '\0') {\n          pOVar20 = p_00->aOp + iVar24;\n        }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pOVar20 = p_00->aOp + iVar24;\n        }" { (expression_statement "pOVar20 = p_00->aOp + iVar24;" (assignment_expression "pOVar20 = p_00->aOp + iVar24" identifier = (binary_expression "p_00->aOp + iVar24" (field_expression "p_00->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar20->p2 = p_00->nOp;" (assignment_expression "pOVar20->p2 = p_00->nOp" (field_expression "pOVar20->p2" identifier -> field_identifier) = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) }) (else_clause "else {\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }" else (compound_statement "{\n        if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }\n        in_stack_ffffff40 = pPVar29;\n        if (pIdx == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;\n        sqlite3VdbeResolveLabel(p_00,(int)local_84);\n      }" { (if_statement "if ((int)uVar23 < 5) {\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }\n        else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }" if (parenthesized_expression "((int)uVar23 < 5)" ( (binary_expression "(int)uVar23 < 5" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          if ((int)uVar23 < 1) goto LAB_000f0c80;\n          pPVar29 = (Parse *)0xf0a54;\n          sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);\n        }" { (if_statement "if ((int)uVar23 < 1) goto LAB_000f0c80;" if (parenthesized_expression "((int)uVar23 < 1)" ( (binary_expression "(int)uVar23 < 1" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_000f0c80;" goto statement_identifier ;)) (expression_statement "pPVar29 = (Parse *)0xf0a54;" (assignment_expression "pPVar29 = (Parse *)0xf0a54" identifier = (cast_expression "(Parse *)0xf0a54" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3UniqueConstraint(pParse_00,uVar23,pIdx);" (call_expression "sqlite3UniqueConstraint(pParse_00,uVar23,pIdx)" identifier (argument_list "(pParse_00,uVar23,pIdx)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }" else (compound_statement "{\n          if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }\n          in_stack_ffffff38 = (Parse *)0x5;\n          sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);\n          local_5c = 1;\n        }" { (if_statement "if (uVar23 == 6) {\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }" if (parenthesized_expression "(uVar23 == 6)" ( (binary_expression "uVar23 == 6" identifier == number_literal) )) (compound_statement "{\n            sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);\n            in_stack_ffffff38 = pPVar29;\n            goto LAB_000f0b65;\n          }" { (expression_statement "sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29);" (call_expression "sqlite3UpsertDoUpdate(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29)" identifier (argument_list "(pParse_00,local_6c,pTab_00,pIdx,(int)pPVar29)" ( identifier , identifier , identifier , identifier , (cast_expression "(int)pPVar29" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "in_stack_ffffff38 = pPVar29;" (assignment_expression "in_stack_ffffff38 = pPVar29" identifier = identifier) ;) (goto_statement "goto LAB_000f0b65;" goto statement_identifier ;) })) (labeled_statement "LAB_000f0c80:\n          if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }" statement_identifier : (if_statement "if ((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))) {\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }" if (parenthesized_expression "((((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0))))))" ( (binary_expression "(((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)) ||\n             (((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))" (parenthesized_expression "(((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0))" ( (binary_expression "((db->flags & 0x2000) != 0) &&\n              (pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)" (parenthesized_expression "((db->flags & 0x2000) != 0)" ( (binary_expression "(db->flags & 0x2000) != 0" (parenthesized_expression "(db->flags & 0x2000)" ( (binary_expression "db->flags & 0x2000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0)" ( (comma_expression "pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0),\n              pTVar13 != (Trigger *)0x0" (assignment_expression "pTVar13 = sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0)" identifier = (call_expression "sqlite3TriggersExist(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0)" identifier (argument_list "(pParse_00,pTab_00,0x75,(ExprList *)0x0,(int *)0x0)" ( identifier , identifier , number_literal , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "pTVar13 != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) || (parenthesized_expression "(((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))))" ( (parenthesized_expression "((pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0))))" ( (binary_expression "(pParse_00->db->flags & 0x4000) != 0 &&\n              ((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))" (binary_expression "(pParse_00->db->flags & 0x4000) != 0" (parenthesized_expression "(pParse_00->db->flags & 0x4000)" ( (binary_expression "pParse_00->db->flags & 0x4000" (field_expression "pParse_00->db->flags" (field_expression "pParse_00->db" identifier -> field_identifier) -> field_identifier) & number_literal) )) != number_literal) && (parenthesized_expression "((pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)))" ( (parenthesized_expression "(pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0))" ( (comma_expression "pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             ), pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)" (assignment_expression "pHVar15 = findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             )" identifier = (call_expression "findElementWithHash(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             )" identifier (argument_list "(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(uint *)0x0\n                                             )" ( (pointer_expression "&pTab_00->pSchema->fkeyHash" & (field_expression "pTab_00->pSchema->fkeyHash" (field_expression "pTab_00->pSchema" identifier -> field_identifier) -> field_identifier)) , (field_expression "pTab_00->zName" identifier -> field_identifier) , (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "pHVar15->data != (void *)0x0 ||\n               (pTab_00->pFKey != (FKey *)0x0)" (binary_expression "pHVar15->data != (void *)0x0" (field_expression "pHVar15->data" identifier -> field_identifier) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(pTab_00->pFKey != (FKey *)0x0)" ( (binary_expression "pTab_00->pFKey != (FKey *)0x0" (field_expression "pTab_00->pFKey" identifier -> field_identifier) != (cast_expression "(FKey *)0x0" ( (type_descriptor "FKey *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )) ))) )) ))) )) (compound_statement "{\n            pPVar17 = pParse_00->pToplevel;\n            if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }\n            pPVar17->isMultiWrite = '\x01';\n          }" { (expression_statement "pPVar17 = pParse_00->pToplevel;" (assignment_expression "pPVar17 = pParse_00->pToplevel" identifier = (field_expression "pParse_00->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse_00->pToplevel == (Parse *)0x0) {\n              pPVar17 = pParse_00;\n            }" if (parenthesized_expression "(pParse_00->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse_00->pToplevel == (Parse *)0x0" (field_expression "pParse_00->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pPVar17 = pParse_00;\n            }" { (expression_statement "pPVar17 = pParse_00;" (assignment_expression "pPVar17 = pParse_00" identifier = identifier) ;) })) (expression_statement "pPVar17->isMultiWrite = '\x01';" (assignment_expression "pPVar17->isMultiWrite = '\x01'" (field_expression "pPVar17->isMultiWrite" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) }))) (expression_statement "in_stack_ffffff38 = (Parse *)0x5;" (assignment_expression "in_stack_ffffff38 = (Parse *)0x5" identifier = (cast_expression "(Parse *)0x5" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c);" (call_expression "sqlite3GenerateRowDelete\n                    (pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c)" identifier (argument_list "(pParse,pTab,(Trigger *)local_b0,(int)(short)local_78,0,5,\n                     (ushort)(local_80 == pIdx),(u8)pPVar29,(u8)in_stack_ffffff44,in_stack_ffffff48,\n                     in_stack_ffffff4c)" ( identifier , identifier , (cast_expression "(Trigger *)local_b0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)(short)local_78" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_78" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) , number_literal , number_literal , (call_expression "(ushort)(local_80 == pIdx)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(local_80 == pIdx)" ( (binary_expression "local_80 == pIdx" identifier == identifier) ))) , (cast_expression "(u8)pPVar29" ( (type_descriptor "u8" type_identifier) ) identifier) , (cast_expression "(u8)in_stack_ffffff44" ( (type_descriptor "u8" type_identifier) ) identifier) , identifier , identifier ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) (expression_statement "in_stack_ffffff40 = pPVar29;" (assignment_expression "in_stack_ffffff40 = pPVar29" identifier = identifier) ;) (if_statement "if (pIdx == local_88) goto LAB_000f0b8a;" if (parenthesized_expression "(pIdx == local_88)" ( (binary_expression "pIdx == local_88" identifier == identifier) )) (goto_statement "goto LAB_000f0b8a;" goto statement_identifier ;)) (labeled_statement "LAB_000f0a5e:\n        in_stack_ffffff40 = (Parse *)0xf0a69;" statement_identifier : (expression_statement "in_stack_ffffff40 = (Parse *)0xf0a69;" (assignment_expression "in_stack_ffffff40 = (Parse *)0xf0a69" identifier = (cast_expression "(Parse *)0xf0a69" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "sqlite3VdbeResolveLabel(p_00,(int)local_84);" (call_expression "sqlite3VdbeResolveLabel(p_00,(int)local_84)" identifier (argument_list "(p_00,(int)local_84)" ( identifier , (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) })))) (if_statement "if (local_b0 == pPVar28) goto LAB_000f0608;" if (parenthesized_expression "(local_b0 == pPVar28)" ( (binary_expression "local_b0 == pPVar28" identifier == identifier) )) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;)) (if_statement "if (local_78 == 1) {\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" if (parenthesized_expression "(local_78 == 1)" ( (binary_expression "local_78 == 1" identifier == number_literal) )) (compound_statement "{\n        if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" { (if_statement "if (local_b0 != (Parse *)0x0) {\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }" if (parenthesized_expression "(local_b0 != (Parse *)0x0)" ( (binary_expression "local_b0 != (Parse *)0x0" identifier != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          bVar1 = pParse_00->nTempReg;\n          if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }\n        }" { (expression_statement "bVar1 = pParse_00->nTempReg;" (assignment_expression "bVar1 = pParse_00->nTempReg" identifier = (field_expression "pParse_00->nTempReg" identifier -> field_identifier)) ;) (if_statement "if (bVar1 < 8) {\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }" if (parenthesized_expression "(bVar1 < 8)" ( (binary_expression "bVar1 < 8" identifier < number_literal) )) (compound_statement "{\n            pParse_00->nTempReg = bVar1 + 1;\n            pParse_00->aTempReg[bVar1] = (int)local_b0;\n          }" { (expression_statement "pParse_00->nTempReg = bVar1 + 1;" (assignment_expression "pParse_00->nTempReg = bVar1 + 1" (field_expression "pParse_00->nTempReg" identifier -> field_identifier) = (binary_expression "bVar1 + 1" identifier + number_literal)) ;) (expression_statement "pParse_00->aTempReg[bVar1] = (int)local_b0;" (assignment_expression "pParse_00->aTempReg[bVar1] = (int)local_b0" (subscript_expression "pParse_00->aTempReg[bVar1]" (field_expression "pParse_00->aTempReg" identifier -> field_identifier) [ identifier ]) = (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;) })) (if_statement "if ((int)local_78 <= pParse_00->nRangeReg) goto LAB_000f0608;" if (parenthesized_expression "((int)local_78 <= pParse_00->nRangeReg)" ( (binary_expression "(int)local_78 <= pParse_00->nRangeReg" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) <= (field_expression "pParse_00->nRangeReg" identifier -> field_identifier)) )) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;)) (expression_statement "pParse_00->nRangeReg = local_78;" (assignment_expression "pParse_00->nRangeReg = local_78" (field_expression "pParse_00->nRangeReg" identifier -> field_identifier) = identifier) ;) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (expression_statement "pParse_00->iRangeReg = (int)local_b0;" (assignment_expression "pParse_00->iRangeReg = (int)local_b0" (field_expression "pParse_00->iRangeReg" identifier -> field_identifier) = (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pIdx = pIdx->pNext;" (assignment_expression "pIdx = pIdx->pNext" identifier = (field_expression "pIdx->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pIdx != (Index *)0x0)" ( (binary_expression "pIdx != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;" statement_identifier : (if_statement "if (local_60 == 0) goto LAB_000f0b10;" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0b10;" goto statement_identifier ;))) }))) (expression_statement "sqlite3VdbeAddOp3(p_00,0xb,0,local_60,(int)in_stack_ffffff38);" (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,local_60,(int)in_stack_ffffff38)" identifier (argument_list "(p_00,0xb,0,local_60,(int)in_stack_ffffff38)" ( identifier , number_literal , number_literal , identifier , (cast_expression "(int)in_stack_ffffff38" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6de02));" (call_expression "sqlite3VdbeComment(p_00,(char *)(unaff_EDI + 0x6de02))" identifier (argument_list "(p_00,(char *)(unaff_EDI + 0x6de02))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6de02)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6de02)" ( (binary_expression "unaff_EDI + 0x6de02" identifier + number_literal) ))) ))) ;) (expression_statement "iVar24 = p_00->nOp;" (assignment_expression "iVar24 = p_00->nOp" identifier = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (expression_statement "iVar22 = iVar24 + -1;" (assignment_expression "iVar22 = iVar24 + -1" identifier = (binary_expression "iVar24 + -1" identifier + number_literal)) ;) (if_statement "if (-1 < local_48) {\n    iVar22 = local_48;\n  }" if (parenthesized_expression "(-1 < local_48)" ( (binary_expression "-1 < local_48" number_literal < identifier) )) (compound_statement "{\n    iVar22 = local_48;\n  }" { (expression_statement "iVar22 = local_48;" (assignment_expression "iVar22 = local_48" identifier = identifier) ;) })) (if_statement "if (p_00->db->mallocFailed == '\0') {\n    p_00->aOp[iVar22].p2 = iVar24;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar24;\n  }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    p_00->aOp[iVar22].p2 = iVar24;\n  }" { (expression_statement "p_00->aOp[iVar22].p2 = iVar24;" (assignment_expression "p_00->aOp[iVar22].p2 = iVar24" (field_expression "p_00->aOp[iVar22].p2" (subscript_expression "p_00->aOp[iVar22]" (field_expression "p_00->aOp" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) }) (else_clause "else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar24;\n  }" else (compound_statement "{\n    *(int *)(unaff_EDI + 0xccb0d) = iVar24;\n  }" { (expression_statement "*(int *)(unaff_EDI + 0xccb0d) = iVar24;" (assignment_expression "*(int *)(unaff_EDI + 0xccb0d) = iVar24" (pointer_expression "*(int *)(unaff_EDI + 0xccb0d)" * (cast_expression "(int *)(unaff_EDI + 0xccb0d)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xccb0d)" ( (binary_expression "unaff_EDI + 0xccb0d" identifier + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_000f0b10:\n  *_pkChng = local_5c;" statement_identifier : (expression_statement "*_pkChng = local_5c;" (assignment_expression "*_pkChng = local_5c" (pointer_expression "*_pkChng" * identifier) = identifier) ;)) (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return;\n}\n\n" (function_definition "void FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)" identifier (parameter_list "(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "char param_5" primitive_type identifier) , (parameter_declaration "byte param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int *param_10" primitive_type (pointer_declarator "*param_10" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "undefined8 uVar24;" type_identifier identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int local_ac;" primitive_type identifier ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "undefined4 *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "byte local_7b;" type_identifier identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "int *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_3c [5];" primitive_type (array_declarator "local_3c [5]" identifier [ number_literal ]) ;) (declaration "byte local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar24 = FUN_0003a401();" (assignment_expression "uVar24 = FUN_0003a401()" identifier = (call_expression "FUN_0003a401()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar16 = (int *)((ulonglong)uVar24 >> 0x20);" (assignment_expression "piVar16 = (int *)((ulonglong)uVar24 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar24 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar24 >> 0x20)" ( (binary_expression "(ulonglong)uVar24 >> 0x20" (cast_expression "(ulonglong)uVar24" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar10 = (int *)uVar24;" (assignment_expression "piVar10 = (int *)uVar24" identifier = (cast_expression "(int *)uVar24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar11 = (int *)piVar10[2];" (assignment_expression "piVar11 = (int *)piVar10[2]" identifier = (cast_expression "(int *)piVar10[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "local_6c = param_10;" (assignment_expression "local_6c = param_10" identifier = identifier) ;) (expression_statement "local_7b = param_6;" (assignment_expression "local_7b = param_6" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *piVar10;" (assignment_expression "iVar4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "bVar23 = param_4 != 0;" (assignment_expression "bVar23 = param_4 != 0" identifier = (binary_expression "param_4 != 0" identifier != number_literal)) ;) (if_statement "if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }" if (parenthesized_expression "(piVar11 == (int *)0x0)" ( (binary_expression "piVar11 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar11 = (int *)FUN_00073350();\n  }" { (expression_statement "piVar11 = (int *)FUN_00073350();" (assignment_expression "piVar11 = (int *)FUN_00073350()" identifier = (cast_expression "(int *)FUN_00073350()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00073350()" identifier (argument_list "()" ( ))))) ;) })) (expression_statement "iVar21 = (int)*(short *)((int)piVar16 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar16 + 0x2a)" identifier = (cast_expression "(int)*(short *)((int)piVar16 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)((int)piVar16 + 0x2a)" * (cast_expression "(short *)((int)piVar16 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar16 + 0x2a)" ( (binary_expression "(int)piVar16 + 0x2a" (cast_expression "(int)piVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (if_statement "if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" if (parenthesized_expression "((*(byte *)(piVar16 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar16 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar16 + 9) & 0x20)" ( (binary_expression "*(byte *)(piVar16 + 9) & 0x20" (pointer_expression "*(byte *)(piVar16 + 9)" * (cast_expression "(byte *)(piVar16 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16 + 9)" ( (binary_expression "piVar16 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }" { (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" identifier = number_literal) ;) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;) (expression_statement "local_80 = (undefined4 *)0x0;" (assignment_expression "local_80 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" else (compound_statement "{\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" { (expression_statement "local_80 = (undefined4 *)piVar16[2];" (assignment_expression "local_80 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (if_statement "if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }" if (parenthesized_expression "(local_80 == (undefined4 *)0x0)" ( (binary_expression "local_80 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }" { (labeled_statement "FUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();" statement_identifier : (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "bVar2 = *(byte *)((int)local_80 + 0x37);" (assignment_expression "bVar2 = *(byte *)((int)local_80 + 0x37)" identifier = (pointer_expression "*(byte *)((int)local_80 + 0x37)" * (cast_expression "(byte *)((int)local_80 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x37)" ( (binary_expression "(int)local_80 + 0x37" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (while_statement "while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }" while (parenthesized_expression "((bVar2 & 3) != 2)" ( (binary_expression "(bVar2 & 3) != 2" (parenthesized_expression "(bVar2 & 3)" ( (binary_expression "bVar2 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }" { (expression_statement "local_80 = (undefined4 *)local_80[5];" (assignment_expression "local_80 = (undefined4 *)local_80[5]" identifier = (cast_expression "(undefined4 *)local_80[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[5]" identifier [ number_literal ]))) ;) (if_statement "if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;" if (parenthesized_expression "(local_80 == (undefined4 *)0x0)" ( (binary_expression "local_80 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto FUN_000157a6;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte *)((int)local_80 + 0x37);" (assignment_expression "bVar2 = *(byte *)((int)local_80 + 0x37)" identifier = (pointer_expression "*(byte *)((int)local_80 + 0x37)" * (cast_expression "(byte *)((int)local_80 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x37)" ( (binary_expression "(int)local_80 + 0x37" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" identifier = number_literal) ;) (expression_statement "local_78 = (uint)*(ushort *)((int)local_80 + 0x32);" (assignment_expression "local_78 = (uint)*(ushort *)((int)local_80 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)((int)local_80 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }" if (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) (compound_statement "{\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }" { (do_statement "do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);" do (compound_statement "{\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    }" { (while_statement "while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }" while (parenthesized_expression "(((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))))" ( (parenthesized_expression "((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))" ( (binary_expression "(short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))" (binary_expression "(short)piVar16[10] == iVar18" (cast_expression "(short)piVar16[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar16[10]" identifier [ number_literal ])) == identifier) || (parenthesized_expression "((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))" ( (parenthesized_expression "(param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))" ( (binary_expression "param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)" (binary_expression "param_9 != 0" identifier != number_literal) && (parenthesized_expression "(*(int *)(param_9 + iVar18 * 4) < 0)" ( (binary_expression "*(int *)(param_9 + iVar18 * 4) < 0" (pointer_expression "*(int *)(param_9 + iVar18 * 4)" * (cast_expression "(int *)(param_9 + iVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + iVar18 * 4)" ( (binary_expression "param_9 + iVar18 * 4" identifier + (binary_expression "iVar18 * 4" identifier * number_literal)) )))) < number_literal) ))) )) ))) )) )) (compound_statement "{\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }" { (labeled_statement "LAB_000f0048:\n        iVar18 = iVar18 + 1;" statement_identifier : (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar21 == iVar18) goto LAB_000f0158;" if (parenthesized_expression "(iVar21 == iVar18)" ( (binary_expression "iVar21 == iVar18" identifier == identifier) )) (goto_statement "goto LAB_000f0158;" goto statement_identifier ;)) })) (expression_statement "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);" (assignment_expression "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10)" identifier = (cast_expression "(undefined4 *)(piVar16[1] + iVar18 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[1] + iVar18 * 0x10)" ( (binary_expression "piVar16[1] + iVar18 * 0x10" (subscript_expression "piVar16[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x10" identifier * number_literal)) )))) ;) (expression_statement "bVar7 = *(byte *)(puVar12 + 3);" (assignment_expression "bVar7 = *(byte *)(puVar12 + 3)" identifier = (pointer_expression "*(byte *)(puVar12 + 3)" * (cast_expression "(byte *)(puVar12 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 3)" ( (binary_expression "puVar12 + 3" identifier + number_literal) ))))) ;) (if_statement "if (bVar7 == 0) goto LAB_000f0048;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;)) (expression_statement "bVar8 = param_6;" (assignment_expression "bVar8 = param_6" identifier = identifier) ;) (if_statement "if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" if (parenthesized_expression "((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb))" ( (binary_expression "(param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)" (parenthesized_expression "(param_6 == 0xb)" ( (binary_expression "param_6 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(bVar8 = bVar7, bVar7 == 0xb)" ( (comma_expression "bVar8 = bVar7, bVar7 == 0xb" (assignment_expression "bVar8 = bVar7" identifier = identifier) , (binary_expression "bVar7 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }" { (labeled_statement "LAB_000f009f:\n        local_a8 = 0;" statement_identifier : (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_000f00a7:\n        bVar8 = 2;" statement_identifier : (expression_statement "bVar8 = 2;" (assignment_expression "bVar8 = 2" identifier = number_literal) ;)) (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar15 = piVar10;\n        }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)((int)piVar15 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar15 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar15 + 0x15)" * (cast_expression "(undefined1 *)((int)piVar15 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 0x15)" ( (binary_expression "(int)piVar15 + 0x15" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);" (assignment_expression "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10)" identifier = (cast_expression "(undefined4 *)(piVar16[1] + iVar18 * 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16[1] + iVar18 * 0x10)" ( (binary_expression "piVar16[1] + iVar18 * 0x10" (subscript_expression "piVar16[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x10" identifier * number_literal)) )))) ;) }) (else_clause "else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" else (compound_statement "{\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" { (if_statement "if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }" if (parenthesized_expression "(bVar8 == 5)" ( (binary_expression "bVar8 == 5" identifier == number_literal) )) (compound_statement "{\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }" { (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (if_statement "if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }" if (parenthesized_expression "(puVar12[1] != 0)" ( (binary_expression "puVar12[1] != 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }" { (labeled_statement "LAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;" statement_identifier : (expression_statement "local_a8 = piVar10[0xe] + -1;" (assignment_expression "local_a8 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;)) (expression_statement "piVar10[0xe] = local_a8;" (assignment_expression "piVar10[0xe] = local_a8" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00073150(local_a8);" (call_expression "FUN_00073150(local_a8)" identifier (argument_list "(local_a8)" ( identifier ))) ;) (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00073150(local_a8);" (call_expression "FUN_00073150(local_a8)" identifier (argument_list "(local_a8)" ( identifier ))) ;) })) (goto_statement "goto LAB_000f00a7;" goto statement_identifier ;) })) (if_statement "if (bVar8 == 2) goto LAB_000f009f;" if (parenthesized_expression "(bVar8 == 2)" ( (binary_expression "bVar8 == 2" identifier == number_literal) )) (goto_statement "goto LAB_000f009f;" goto statement_identifier ;)) (if_statement "if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" if (parenthesized_expression "(bVar8 < 3)" ( (binary_expression "bVar8 < 3" identifier < number_literal) )) (compound_statement "{\n          if (bVar8 != 1) goto LAB_000f0025;\n        }" { (if_statement "if (bVar8 != 1) goto LAB_000f0025;" if (parenthesized_expression "(bVar8 != 1)" ( (binary_expression "bVar8 != 1" identifier != number_literal) )) (goto_statement "goto LAB_000f0025;" goto statement_identifier ;)) }) (else_clause "else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" else (if_statement "if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" if (parenthesized_expression "(bVar8 != 3)" ( (binary_expression "bVar8 != 3" identifier != number_literal) )) (compound_statement "{\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" { (if_statement "if (bVar8 == 5) goto LAB_000f04a3;" if (parenthesized_expression "(bVar8 == 5)" ( (binary_expression "bVar8 == 5" identifier == number_literal) )) (goto_statement "goto LAB_000f04a3;" goto statement_identifier ;)) (labeled_statement "LAB_000f0025:\n          FUN_00073150(param_7);" statement_identifier : (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;)) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;) })))) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }))) (expression_statement "iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);" (assignment_expression "iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" identifier = (call_expression "FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" identifier (argument_list "(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" ( identifier , (binary_expression "unaff_EDI + 0x6dd5f" identifier + number_literal) , (pointer_expression "*piVar16" * identifier) , (pointer_expression "*puVar12" * identifier) )))) ;) (expression_statement "FUN_00072f80(bVar8,param_3 + 1 + iVar18);" (call_expression "FUN_00072f80(bVar8,param_3 + 1 + iVar18)" identifier (argument_list "(bVar8,param_3 + 1 + iVar18)" ( identifier , (binary_expression "param_3 + 1 + iVar18" (binary_expression "param_3 + 1" identifier + number_literal) + identifier) ))) ;) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }" { (expression_statement "iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;" (assignment_expression "iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18" identifier = (binary_expression "piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18" (binary_expression "piVar11[0x19] + -0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + number_literal) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "*(undefined1 *)(iVar20 + 1) = 0xf9;" (assignment_expression "*(undefined1 *)(iVar20 + 1) = 0xf9" (pointer_expression "*(undefined1 *)(iVar20 + 1)" * (cast_expression "(undefined1 *)(iVar20 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar20 + 0x10) = iVar19;" (assignment_expression "*(int *)(iVar20 + 0x10) = iVar19" (pointer_expression "*(int *)(iVar20 + 0x10)" * (cast_expression "(int *)(iVar20 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0x10)" ( (binary_expression "iVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (iVar19 != 0) {\n        FUN_00044090();\n      }" else (if_statement "if (iVar19 != 0) {\n        FUN_00044090();\n      }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_00044090();\n      }" { (expression_statement "FUN_00044090();" (call_expression "FUN_00044090()" identifier (argument_list "()" ( ))) ;) })))) (if_statement "if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }" if (parenthesized_expression "(0 < piVar11[0x1a])" ( (binary_expression "0 < piVar11[0x1a]" number_literal < (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }" { (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_a8 == 0) goto LAB_000f0048;" if (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0048;" goto statement_identifier ;)) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar21 != iVar18)" ( (binary_expression "iVar21 != iVar18" identifier != identifier) )) ;) })) (labeled_statement "LAB_000f0158:\n  piVar15 = (int *)piVar16[6];" statement_identifier : (expression_statement "piVar15 = (int *)piVar16[6];" (assignment_expression "piVar15 = (int *)piVar16[6]" identifier = (cast_expression "(int *)piVar16[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[6]" identifier [ number_literal ]))) ;)) (if_statement "if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }" if (parenthesized_expression "((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0))" ( (binary_expression "(piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)" (parenthesized_expression "(piVar15 != (int *)0x0)" ( (binary_expression "piVar15 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 2)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 2" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }" { (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" identifier = number_literal) ;) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = (unary_expression "~param_3" ~ identifier)) ;) (expression_statement "bVar7 = 2;" (assignment_expression "bVar7 = 2" identifier = number_literal) ;) (if_statement "if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }" if (parenthesized_expression "(param_6 != 0xb)" ( (binary_expression "param_6 != 0xb" identifier != number_literal) )) (compound_statement "{\n      bVar7 = param_6;\n    }" { (expression_statement "bVar7 = param_6;" (assignment_expression "bVar7 = param_6" identifier = identifier) ;) })) (expression_statement "piVar22 = piVar15 + 1;" (assignment_expression "piVar22 = piVar15 + 1" identifier = (binary_expression "piVar15 + 1" identifier + number_literal)) ;) (if_statement "if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }" if (parenthesized_expression "(0 < *piVar15)" ( (binary_expression "0 < *piVar15" number_literal < (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }" { (do_statement "do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);" do (compound_statement "{\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      }" { (expression_statement "iVar21 = *piVar22;" (assignment_expression "iVar21 = *piVar22" identifier = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" if (parenthesized_expression "(param_9 == 0)" ( (binary_expression "param_9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }" { (labeled_statement "LAB_000f023c:\n          iVar18 = piVar10[0xe];" statement_identifier : (expression_statement "iVar18 = piVar10[0xe];" (assignment_expression "iVar18 = piVar10[0xe]" identifier = (subscript_expression "piVar10[0xe]" identifier [ number_literal ])) ;)) (expression_statement "piVar10[0xe] = iVar18 + -1;" (assignment_expression "piVar10[0xe] = iVar18 + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);" (call_expression "FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10)" identifier (argument_list "(piVar10,iVar21,iVar18 + -1,0x10)" ( identifier , identifier , (binary_expression "iVar18 + -1" identifier + number_literal) , number_literal ))) ;) (if_statement "if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" if (parenthesized_expression "(bVar7 == 4)" ( (binary_expression "bVar7 == 4" identifier == number_literal) )) (compound_statement "{\n            FUN_00073150(param_7);\n          }" { (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;) }) (else_clause "else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" else (compound_statement "{\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" { (expression_statement "iVar21 = piVar22[1];" (assignment_expression "iVar21 = piVar22[1]" identifier = (subscript_expression "piVar22[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar21 = *piVar16;\n            }" { (expression_statement "iVar21 = *piVar16;" (assignment_expression "iVar21 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) })) (if_statement "if (bVar7 == 5) {\n              bVar7 = 2;\n            }" if (parenthesized_expression "(bVar7 == 5)" ( (binary_expression "bVar7 == 5" identifier == number_literal) )) (compound_statement "{\n              bVar7 = 2;\n            }" { (expression_statement "bVar7 = 2;" (assignment_expression "bVar7 = 2" identifier = number_literal) ;) })) (expression_statement "FUN_000744c0(iVar21,0,3);" (call_expression "FUN_000744c0(iVar21,0,3)" identifier (argument_list "(iVar21,0,3)" ( identifier , number_literal , number_literal ))) ;) }))) (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" else (compound_statement "{\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" { (do_statement "do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);" do (compound_statement "{\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          }" { (expression_statement "*(undefined4 *)((int)local_3c + uVar13) = 0;" (assignment_expression "*(undefined4 *)((int)local_3c + uVar13) = 0" (pointer_expression "*(undefined4 *)((int)local_3c + uVar13)" * (cast_expression "(undefined4 *)((int)local_3c + uVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + uVar13)" ( (binary_expression "(int)local_3c + uVar13" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar13 = uVar13 + 4;" (assignment_expression "uVar13 = uVar13 + 4" identifier = (binary_expression "uVar13 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 < 0x18)" ( (binary_expression "uVar13 < 0x18" identifier < number_literal) )) ;) (expression_statement "local_3c[1] = unaff_EDI + -0xa9f97;" (assignment_expression "local_3c[1] = unaff_EDI + -0xa9f97" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0xa9f97" identifier + number_literal)) ;) (expression_statement "local_24 = param_9;" (assignment_expression "local_24 = param_9" identifier = identifier) ;) (if_statement "if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }" { (if_statement "if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }" if (parenthesized_expression "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }" { (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000f0235;" goto statement_identifier ;) })) }) (else_clause "else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" else (compound_statement "{\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" { (expression_statement "FUN_0005c830();" (call_expression "FUN_0005c830()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar8 = local_28;" (assignment_expression "bVar8 = local_28" identifier = identifier) ;) (if_statement "if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }" if (parenthesized_expression "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }" { (labeled_statement "LAB_000f0235:\n              bVar8 = bVar8 & 0xfd;" statement_identifier : (expression_statement "bVar8 = bVar8 & 0xfd;" (assignment_expression "bVar8 = bVar8 & 0xfd" identifier = (binary_expression "bVar8 & 0xfd" identifier & number_literal)) ;)) })) (if_statement "if (bVar8 != 0) goto LAB_000f023c;" if (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f023c;" goto statement_identifier ;)) }))) }))) (expression_statement "local_ac = local_ac + 1;" (assignment_expression "local_ac = local_ac + 1" identifier = (binary_expression "local_ac + 1" identifier + number_literal)) ;) (expression_statement "piVar22 = piVar22 + 5;" (assignment_expression "piVar22 = piVar22 + 5" identifier = (binary_expression "piVar22 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_ac < *piVar15)" ( (binary_expression "local_ac < *piVar15" identifier < (pointer_expression "*piVar15" * identifier)) )) ;) })) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "bVar17 = (bool)(param_5 != '\0' & bVar2);" (assignment_expression "bVar17 = (bool)(param_5 != '\0' & bVar2)" identifier = (cast_expression "(bool)(param_5 != '\0' & bVar2)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(param_5 != '\0' & bVar2)" ( (binary_expression "param_5 != '\0' & bVar2" (binary_expression "param_5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) & identifier) )))) ;) (if_statement "if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" if (parenthesized_expression "(param_10 == (int *)0x0)" ( (binary_expression "param_10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }" { (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;" statement_identifier : (if_statement "if (!bVar17) goto LAB_000f0dc0;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_000f0dc0;" goto statement_identifier ;))) (expression_statement "iVar21 = piVar10[0xe] + -1;" (assignment_expression "iVar21 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar21;" (assignment_expression "piVar10[0xe] = iVar21" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar13 = (uint)param_6;" (assignment_expression "uVar13 = (uint)param_6" identifier = (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" if (parenthesized_expression "((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb))" ( (binary_expression "(param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)" (parenthesized_expression "(param_6 == 0xb)" ( (binary_expression "param_6 == 0xb" identifier == number_literal) )) && (parenthesized_expression "(uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)" ( (comma_expression "uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb" (assignment_expression "uVar13 = (uint)*(byte *)(piVar16 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(piVar16 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(piVar16 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16 + 0xc)" ( (binary_expression "piVar16 + 0xc" identifier + number_literal) ))))) , (binary_expression "uVar13 == 0xb" identifier == number_literal)) ))) )) (compound_statement "{\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }" { (if_statement "if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" if (parenthesized_expression "((param_10 == (int *)0x0) || (param_10[4] != 0))" ( (binary_expression "(param_10 == (int *)0x0) || (param_10[4] != 0)" (parenthesized_expression "(param_10 == (int *)0x0)" ( (binary_expression "param_10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(param_10[4] != 0)" ( (binary_expression "param_10[4] != 0" (subscript_expression "param_10[4]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }" { (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" identifier = number_literal) ;) (labeled_statement "LAB_000f0547:\n        local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (if_statement "if (param_4 != 0) goto LAB_000f117a;" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f117a;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" else (compound_statement "{\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" { (labeled_statement "LAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" statement_identifier : (if_statement "if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" if (parenthesized_expression "(param_10[2] == 0)" ( (binary_expression "param_10[2] == 0" (subscript_expression "param_10[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }" { (if_statement "if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }" { (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000f0870;" goto statement_identifier ;) })) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 4;" (assignment_expression "uVar13 = 4" identifier = number_literal) ;) }) (else_clause "else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" else (compound_statement "{\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" { (if_statement "if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" { (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (expression_statement "FUN_000f3260(0,param_1);" (call_expression "FUN_000f3260(0,param_1)" identifier (argument_list "(0,param_1)" ( number_literal , identifier ))) ;) (labeled_statement "LAB_000f0870:\n            local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000f05be;" goto statement_identifier ;) })) (expression_statement "uVar13 = 6;" (assignment_expression "uVar13 = 6" identifier = number_literal) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) })))) (labeled_statement "LAB_000f117a:\n        FUN_00072f80(iVar21,param_4);" statement_identifier : (expression_statement "FUN_00072f80(iVar21,param_4);" (call_expression "FUN_00072f80(iVar21,param_4)" identifier (argument_list "(iVar21,param_4)" ( identifier , identifier ))) ;)) (if_statement "if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }" if (parenthesized_expression "(0 < piVar11[0x1a])" ( (binary_expression "0 < piVar11[0x1a]" number_literal < (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }" { (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) }))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (if_statement "if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }" if (parenthesized_expression "(uVar13 < 7)" ( (binary_expression "uVar13 < 7" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }" { (expression_statement "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();" (call_expression "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" ( (binary_expression "&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI" (binary_expression "&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" (pointer_expression "&UNK_000caf71" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x71541 + uVar13 * 4)" ( (binary_expression "unaff_EDI + 0x71541 + uVar13 * 4" (binary_expression "unaff_EDI + 0x71541" identifier + number_literal) + (binary_expression "uVar13 * 4" identifier * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00086c60();" (call_expression "FUN_00086c60()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" else (compound_statement "{\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" { (if_statement "if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;" if (parenthesized_expression "((param_10 != (int *)0x0) && (param_10[4] == 0))" ( (binary_expression "(param_10 != (int *)0x0) && (param_10[4] == 0)" (parenthesized_expression "(param_10 != (int *)0x0)" ( (binary_expression "param_10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_10[4] == 0)" ( (binary_expression "param_10[4] == 0" (subscript_expression "param_10[4]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_000f11cd;" goto statement_identifier ;)) (if_statement "if (uVar13 != 5) goto LAB_000f0547;" if (parenthesized_expression "(uVar13 != 5)" ( (binary_expression "uVar13 != 5" identifier != number_literal) )) (goto_statement "goto LAB_000f0547;" goto statement_identifier ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (if_statement "if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }" if (parenthesized_expression "((param_6 != 5) && (piVar16[2] != 0))" ( (binary_expression "(param_6 != 5) && (piVar16[2] != 0)" (parenthesized_expression "(param_6 != 5)" ( (binary_expression "param_6 != 5" identifier != number_literal) )) && (parenthesized_expression "(piVar16[2] != 0)" ( (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }" { (expression_statement "local_60 = FUN_00073150(0);" (assignment_expression "local_60 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);" (call_expression "FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI)" identifier (argument_list "(piVar11,&UNK_0006dd8e + unaff_EDI)" ( identifier , (binary_expression "&UNK_0006dd8e + unaff_EDI" (pointer_expression "&UNK_0006dd8e" & identifier) + identifier) ))) ;) })) (if_statement "if (param_4 != 0) goto LAB_000f117a;" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000f117a;" goto statement_identifier ;)) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddab)" ( identifier , (binary_expression "unaff_EDI + 0x6ddab" identifier + number_literal) ))) ;) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" identifier (argument_list "(iVar21,param_3)" ( identifier , identifier ))) ;) (if_statement "if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" if (parenthesized_expression "((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0))" ( (binary_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)" (parenthesized_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0))" ( (binary_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)" (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x20)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(iVar21 = FUN_00049a60(0,0), iVar21 == 0)" ( (comma_expression "iVar21 = FUN_00049a60(0,0), iVar21 == 0" (assignment_expression "iVar21 = FUN_00049a60(0,0)" identifier = (call_expression "FUN_00049a60(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) , (binary_expression "iVar21 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(iVar21 = FUN_0004ed00(0), iVar21 == 0)" ( (comma_expression "iVar21 = FUN_0004ed00(0), iVar21 == 0" (assignment_expression "iVar21 = FUN_0004ed00(0)" identifier = (call_expression "FUN_0004ed00(0)" identifier (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar21 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }" { (expression_statement "FUN_00073150(0x40);" (call_expression "FUN_00073150(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) ;) (expression_statement "FUN_000626c0();" (call_expression "FUN_000626c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) (if_statement "if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }" if (parenthesized_expression "(piVar16[2] != 0)" ( (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }" { (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            piVar15 = piVar10;\n          }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" * (cast_expression "(undefined1 *)(piVar15 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 5)" ( (binary_expression "piVar15 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000d1920(param_2,0,0xffffffff);" (call_expression "FUN_000d1920(param_2,0,0xffffffff)" identifier (argument_list "(param_2,0,0xffffffff)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" else (compound_statement "{\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" { (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar15 = piVar10;\n        }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" * (cast_expression "(undefined1 *)(piVar15 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 5)" ( (binary_expression "piVar15 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);" (call_expression "FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff)" identifier (argument_list "(param_1,param_2,param_3,1,0,5,1,0xffffffff)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_000f05be:\n    FUN_0006dec0();" statement_identifier : (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }" { (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x000f05e4;" goto statement_identifier ;) })) (expression_statement "local_48 = FUN_00073150(0);" (assignment_expression "local_48 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "iVar21 = local_60 + -1;" (assignment_expression "iVar21 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) (if_statement "if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }" if (parenthesized_expression "(local_60 + -1 < 0)" ( (binary_expression "local_60 + -1 < 0" (binary_expression "local_60 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n      iVar21 = piVar11[0x1a] + -1;\n    }" { (expression_statement "iVar21 = piVar11[0x1a] + -1;" (assignment_expression "iVar21 = piVar11[0x1a] + -1" identifier = (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "iVar18 = unaff_EDI + 0xccb05;" (assignment_expression "iVar18 = unaff_EDI + 0xccb05" identifier = (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }" { (expression_statement "iVar18 = piVar11[0x19] + iVar21 * 0x18;" (assignment_expression "iVar18 = piVar11[0x19] + iVar21 * 0x18" identifier = (binary_expression "piVar11[0x19] + iVar21 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar21 * 0x18" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar18 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar18 + 8) = piVar11[0x1a]" (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) )))) = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;" if (parenthesized_expression "(puVar12 != (undefined4 *)0x0)" ( (binary_expression "puVar12 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f05ea;" goto statement_identifier ;)) }) (else_clause "else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" else (compound_statement "{\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" { (if_statement "if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }" if (parenthesized_expression "(*param_10 != 0)" ( (binary_expression "*param_10 != 0" (pointer_expression "*param_10" * identifier) != number_literal) )) (compound_statement "{\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }" { (expression_statement "local_88 = (undefined4 *)param_10[4];" (assignment_expression "local_88 = (undefined4 *)param_10[4]" identifier = (cast_expression "(undefined4 *)param_10[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_10[4]" identifier [ number_literal ]))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (if_statement "if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }" if (parenthesized_expression "(local_88 != (undefined4 *)0x0)" ( (binary_expression "local_88 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }" { (expression_statement "local_58 = FUN_00073150(0);" (assignment_expression "local_58 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6dd71)" identifier (argument_list "(piVar11,unaff_EDI + 0x6dd71)" ( identifier , (binary_expression "unaff_EDI + 0x6dd71" identifier + number_literal) ))) ;) })) (goto_statement "goto LAB_000f0322;" goto statement_identifier ;) })) (if_statement "if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }" { (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" identifier = number_literal) ;) (expression_statement "uVar13 = 4;" (assignment_expression "uVar13 = 4" identifier = number_literal) ;) (expression_statement "local_6c = (int *)0x0;" (assignment_expression "local_6c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "iVar21 = piVar10[0xe] + -1;" (assignment_expression "iVar21 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar21;" (assignment_expression "piVar10[0xe] = iVar21" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000f0547;" goto statement_identifier ;) })) (expression_statement "local_6c = (int *)0x0;" (assignment_expression "local_6c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" identifier = number_literal) ;) (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000f0dc0:\n    local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" identifier = (cast_expression "(undefined4 *)piVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (labeled_statement "joined_r0x000f05e4:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;" if (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" ( (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f0b10;" goto statement_identifier ;)) (labeled_statement "LAB_000f05ea:\n    bVar17 = false;" statement_identifier : (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (do_statement "do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);" do (compound_statement "{\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    }" { (while_statement "while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }" while (parenthesized_expression "(*(int *)(extraout_ECX + local_9c * 4) == 0)" ( (binary_expression "*(int *)(extraout_ECX + local_9c * 4) == 0" (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }" { (labeled_statement "LAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];" statement_identifier : (expression_statement "puVar12 = (undefined4 *)puVar12[5];" (assignment_expression "puVar12 = (undefined4 *)puVar12[5]" identifier = (cast_expression "(undefined4 *)puVar12[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[5]" identifier [ number_literal ]))) ;)) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (if_statement "if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;" if (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" ( (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f0ab0;" goto statement_identifier ;)) })) (if_statement "if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" if (parenthesized_expression "(puVar12 == local_88)" ( (binary_expression "puVar12 == local_88" identifier == identifier) )) (compound_statement "{\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }" { (expression_statement "local_84 = local_58 + 1;" (assignment_expression "local_84 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "local_54 = FUN_00073150(0);" (assignment_expression "local_54 = FUN_00073150(0)" identifier = (call_expression "FUN_00073150(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddc6)" ( identifier , (binary_expression "unaff_EDI + 0x6ddc6" identifier + number_literal) ))) ;) (expression_statement "iVar21 = unaff_EDI + 0xccb05;" (assignment_expression "iVar21 = unaff_EDI + 0xccb05" identifier = (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal)) ;) (expression_statement "iVar18 = piVar11[0x1a] + -1;" (assignment_expression "iVar18 = piVar11[0x1a] + -1" identifier = (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < local_58) {\n          iVar18 = local_58;\n        }" if (parenthesized_expression "(-1 < local_58)" ( (binary_expression "-1 < local_58" number_literal < identifier) )) (compound_statement "{\n          iVar18 = local_58;\n        }" { (expression_statement "iVar18 = local_58;" (assignment_expression "iVar18 = local_58" identifier = identifier) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }" { (expression_statement "iVar21 = piVar11[0x19] + iVar18 * 0x18;" (assignment_expression "iVar21 = piVar11[0x19] + iVar18 * 0x18" identifier = (binary_expression "piVar11[0x19] + iVar18 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x18" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar21 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar21 + 8) = piVar11[0x1a]" (pointer_expression "*(int *)(iVar21 + 8)" * (cast_expression "(int *)(iVar21 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 8)" ( (binary_expression "iVar21 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (!bVar17) goto LAB_000f0d78;" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (goto_statement "goto LAB_000f0d78;" goto statement_identifier ;)) }) (else_clause "else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" else (compound_statement "{\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" { (expression_statement "local_84 = piVar10[0xe] + -1;" (assignment_expression "local_84 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = local_84;" (assignment_expression "piVar10[0xe] = local_84" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }" if (parenthesized_expression "((!bVar17) && (local_88 == (undefined4 *)0x0))" ( (binary_expression "(!bVar17) && (local_88 == (undefined4 *)0x0)" (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) && (parenthesized_expression "(local_88 == (undefined4 *)0x0)" ( (binary_expression "local_88 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }" { (labeled_statement "LAB_000f0d78:\n          FUN_00073230();" statement_identifier : (expression_statement "FUN_00073230();" (call_expression "FUN_00073230()" identifier (argument_list "()" ( ))) ;)) (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;) })) }))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12)" identifier (argument_list "(piVar11,unaff_EDI + 0x6dddd,*puVar12)" ( identifier , (binary_expression "unaff_EDI + 0x6dddd" identifier + number_literal) , (pointer_expression "*puVar12" * identifier) ))) ;) (if_statement "if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }" if (parenthesized_expression "(puVar12[9] != 0)" ( (binary_expression "puVar12[9] != 0" (subscript_expression "puVar12[9]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }" { (expression_statement "FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));" (call_expression "FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4))" identifier (argument_list "(*(undefined4 *)(extraout_ECX + local_9c * 4))" ( (pointer_expression "*(undefined4 *)(extraout_ECX + local_9c * 4)" * (cast_expression "(undefined4 *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) )))) ))) ;) (expression_statement "iVar21 = *piVar10;" (assignment_expression "iVar21 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = (unary_expression "~param_3" ~ identifier)) ;) (if_statement "if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" if (parenthesized_expression "(puVar12[9] == 0)" ( (binary_expression "puVar12[9] == 0" (subscript_expression "puVar12[9]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }" { (if_statement "if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }" if (parenthesized_expression "(*(char *)(iVar21 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar21 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar21 + 0x4d)" * (cast_expression "(char *)(iVar21 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x4d)" ( (binary_expression "iVar21 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }" { (expression_statement "FUN_000c9bf0(piVar10,0,local_84,0x10);" (call_expression "FUN_000c9bf0(piVar10,0,local_84,0x10)" identifier (argument_list "(piVar10,0,local_84,0x10)" ( identifier , number_literal , identifier , number_literal ))) ;) })) }) (else_clause "else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" else (compound_statement "{\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" { (expression_statement "iVar18 = FUN_0005e9a0();" (assignment_expression "iVar18 = FUN_0005e9a0()" identifier = (call_expression "FUN_0005e9a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }" if (parenthesized_expression "(*(char *)(iVar21 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar21 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar21 + 0x4d)" * (cast_expression "(char *)(iVar21 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x4d)" ( (binary_expression "iVar21 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }" { (expression_statement "FUN_000c9bf0(piVar10,iVar18,local_84,0x10);" (call_expression "FUN_000c9bf0(piVar10,iVar18,local_84,0x10)" identifier (argument_list "(piVar10,iVar18,local_84,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) })) (if_statement "if (iVar18 != 0) {\n            FUN_00063d60();\n          }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00063d60();\n          }" { (expression_statement "FUN_00063d60();" (call_expression "FUN_00063d60()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar18 = *(int *)(extraout_ECX + local_9c * 4)" identifier = (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar21 = iVar18 + 1;" (assignment_expression "iVar21 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (if_statement "if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" if (parenthesized_expression "(*(short *)(puVar12 + 0xd) == 0)" ( (binary_expression "*(short *)(puVar12 + 0xd) == 0" (pointer_expression "*(short *)(puVar12 + 0xd)" * (cast_expression "(short *)(puVar12 + 0xd)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        uVar13 = 0;\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" else (compound_statement "{\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);" do (compound_statement "{\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        }" { (while_statement "while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }" { (expression_statement "sVar3 = *(short *)(puVar12[1] + iVar18 * 2);" (assignment_expression "sVar3 = *(short *)(puVar12[1] + iVar18 * 2)" identifier = (pointer_expression "*(short *)(puVar12[1] + iVar18 * 2)" * (cast_expression "(short *)(puVar12[1] + iVar18 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12[1] + iVar18 * 2)" ( (binary_expression "puVar12[1] + iVar18 * 2" (subscript_expression "puVar12[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 2" identifier * number_literal)) ))))) ;) (expression_statement "iVar19 = (int)sVar3;" (assignment_expression "iVar19 = (int)sVar3" identifier = (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar19 == -2) break;" if (parenthesized_expression "(iVar19 == -2)" ( (binary_expression "iVar19 == -2" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = param_3;" (assignment_expression "uVar13 = param_3" identifier = identifier) ;) (if_statement "if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" if (parenthesized_expression "(iVar19 == -1)" ( (binary_expression "iVar19 == -1" identifier == number_literal) )) (compound_statement "{\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }" { (expression_statement "cVar9 = 'P';" (assignment_expression "cVar9 = 'P'" identifier = (char_literal "'P'" ' character ')) ;) (expression_statement "iVar20 = piVar11[0x1a];" (assignment_expression "iVar20 = piVar11[0x1a]" identifier = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;" if (parenthesized_expression "(iVar20 < piVar11[0x1b])" ( (binary_expression "iVar20 < piVar11[0x1b]" identifier < (subscript_expression "piVar11[0x1b]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000f0756;" goto statement_identifier ;)) (labeled_statement "LAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);" statement_identifier : (expression_statement "FUN_00072e30(iVar21 + iVar18,0);" (call_expression "FUN_00072e30(iVar21 + iVar18,0)" identifier (argument_list "(iVar21 + iVar18,0)" ( (binary_expression "iVar21 + iVar18" identifier + identifier) , number_literal ))) ;)) }) (else_clause "else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" else (compound_statement "{\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" { (if_statement "if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }" if (parenthesized_expression "(sVar3 != (short)piVar16[10])" ( (binary_expression "sVar3 != (short)piVar16[10]" identifier != (cast_expression "(short)piVar16[10]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "piVar16[10]" identifier [ number_literal ]))) )) (compound_statement "{\n                uVar13 = param_3 + 1 + iVar19;\n              }" { (expression_statement "uVar13 = param_3 + 1 + iVar19;" (assignment_expression "uVar13 = param_3 + 1 + iVar19" identifier = (binary_expression "param_3 + 1 + iVar19" (binary_expression "param_3 + 1" identifier + number_literal) + identifier)) ;) })) (expression_statement "iVar20 = piVar11[0x1a];" (assignment_expression "iVar20 = piVar11[0x1a]" identifier = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (expression_statement "cVar9 = ~(byte)(sVar3 >> 7) + 0x50;" (assignment_expression "cVar9 = ~(byte)(sVar3 >> 7) + 0x50" identifier = (binary_expression "~(byte)(sVar3 >> 7) + 0x50" (unary_expression "~(byte)(sVar3 >> 7)" ~ (call_expression "(byte)(sVar3 >> 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(sVar3 >> 7)" ( (binary_expression "sVar3 >> 7" identifier >> number_literal) )))) + number_literal)) ;) (if_statement "if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;" if (parenthesized_expression "(piVar11[0x1b] <= iVar20)" ( (binary_expression "piVar11[0x1b] <= iVar20" (subscript_expression "piVar11[0x1b]" identifier [ number_literal ]) <= identifier) )) (goto_statement "goto LAB_000f080d;" goto statement_identifier ;)) (labeled_statement "LAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;" statement_identifier : (expression_statement "piVar11[0x1a] = iVar20 + 1;" (assignment_expression "piVar11[0x1a] = iVar20 + 1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;)) (expression_statement "pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);" (assignment_expression "pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18)" identifier = (cast_expression "(char *)(piVar11[0x19] + iVar20 * 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + iVar20 * 0x18)" ( (binary_expression "piVar11[0x19] + iVar20 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar20 * 0x18" identifier * number_literal)) )))) ;) (expression_statement "*pcVar1 = cVar9;" (assignment_expression "*pcVar1 = cVar9" (pointer_expression "*pcVar1" * identifier) = identifier) ;) (expression_statement "pcVar1[2] = '\0';" (assignment_expression "pcVar1[2] = '\0'" (subscript_expression "pcVar1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[3] = '\0';" (assignment_expression "pcVar1[3] = '\0'" (subscript_expression "pcVar1[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(uint *)(pcVar1 + 4) = uVar13;" (assignment_expression "*(uint *)(pcVar1 + 4) = uVar13" (pointer_expression "*(uint *)(pcVar1 + 4)" * (cast_expression "(uint *)(pcVar1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + 4)" ( (binary_expression "pcVar1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(pcVar1 + 8) = iVar21 + iVar18;" (assignment_expression "*(int *)(pcVar1 + 8) = iVar21 + iVar18" (pointer_expression "*(int *)(pcVar1 + 8)" * (cast_expression "(int *)(pcVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + 8)" ( (binary_expression "pcVar1 + 8" identifier + number_literal) )))) = (binary_expression "iVar21 + iVar18" identifier + identifier)) ;) (expression_statement "pcVar1[0xc] = '\0';" (assignment_expression "pcVar1[0xc] = '\0'" (subscript_expression "pcVar1[0xc]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0xd] = '\0';" (assignment_expression "pcVar1[0xd] = '\0'" (subscript_expression "pcVar1[0xd]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0xe] = '\0';" (assignment_expression "pcVar1[0xe] = '\0'" (subscript_expression "pcVar1[0xe]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0xf] = '\0';" (assignment_expression "pcVar1[0xf] = '\0'" (subscript_expression "pcVar1[0xf]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x10] = '\0';" (assignment_expression "pcVar1[0x10] = '\0'" (subscript_expression "pcVar1[0x10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x11] = '\0';" (assignment_expression "pcVar1[0x11] = '\0'" (subscript_expression "pcVar1[0x11]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x12] = '\0';" (assignment_expression "pcVar1[0x12] = '\0'" (subscript_expression "pcVar1[0x12]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x13] = '\0';" (assignment_expression "pcVar1[0x13] = '\0'" (subscript_expression "pcVar1[0x13]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[1] = '\0';" (assignment_expression "pcVar1[1] = '\0'" (subscript_expression "pcVar1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x14] = '\0';" (assignment_expression "pcVar1[0x14] = '\0'" (subscript_expression "pcVar1[0x14]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x15] = '\0';" (assignment_expression "pcVar1[0x15] = '\0'" (subscript_expression "pcVar1[0x15]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x16] = '\0';" (assignment_expression "pcVar1[0x16] = '\0'" (subscript_expression "pcVar1[0x16]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar1[0x17] = '\0';" (assignment_expression "pcVar1[0x17] = '\0'" (subscript_expression "pcVar1[0x17]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "iVar20 = unaff_EDI + 0x6cca1;" (assignment_expression "iVar20 = unaff_EDI + 0x6cca1" identifier = (binary_expression "unaff_EDI + 0x6cca1" identifier + number_literal)) ;) (if_statement "if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }" if (parenthesized_expression "(-1 < iVar19)" ( (binary_expression "-1 < iVar19" number_literal < identifier) )) (compound_statement "{\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }" { (expression_statement "iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);" (assignment_expression "iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1])" identifier = (pointer_expression "*(int *)(iVar19 * 0x10 + piVar16[1])" * (cast_expression "(int *)(iVar19 * 0x10 + piVar16[1])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 * 0x10 + piVar16[1])" ( (binary_expression "iVar19 * 0x10 + piVar16[1]" (binary_expression "iVar19 * 0x10" identifier * number_literal) + (subscript_expression "piVar16[1]" identifier [ number_literal ])) ))))) ;) })) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20)" identifier (argument_list "(piVar11,unaff_EDI + 0x6b66a,iVar20)" ( identifier , (binary_expression "unaff_EDI + 0x6b66a" identifier + number_literal) , identifier ))) ;) (expression_statement "uVar13 = (uint)*(ushort *)(puVar12 + 0xd);" (assignment_expression "uVar13 = (uint)*(ushort *)(puVar12 + 0xd)" identifier = (binary_expression "(uint)*(ushort *)(puVar12 + 0xd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) ))))) ;) (if_statement "if ((int)uVar13 <= iVar18) goto LAB_000f0926;" if (parenthesized_expression "((int)uVar13 <= iVar18)" ( (binary_expression "(int)uVar13 <= iVar18" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_000f0926;" goto statement_identifier ;)) })) (expression_statement "iVar19 = *piVar10;" (assignment_expression "iVar19 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = (unary_expression "~param_3" ~ identifier)) ;) (if_statement "if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" if (parenthesized_expression "(*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0)" ( (binary_expression "*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0" (pointer_expression "*(int *)(iVar18 * 0x14 + puVar12[10] + 4)" * (cast_expression "(int *)(iVar18 * 0x14 + puVar12[10] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 * 0x14 + puVar12[10] + 4)" ( (binary_expression "iVar18 * 0x14 + puVar12[10] + 4" (binary_expression "iVar18 * 0x14 + puVar12[10]" (binary_expression "iVar18 * 0x14" identifier * number_literal) + (subscript_expression "puVar12[10]" identifier [ number_literal ])) + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }" { (if_statement "if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }" if (parenthesized_expression "(*(char *)(iVar19 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar19 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar19 + 0x4d)" * (cast_expression "(char *)(iVar19 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x4d)" ( (binary_expression "iVar19 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              FUN_000cb850();\n            }" { (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" else (compound_statement "{\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" { (expression_statement "iVar20 = FUN_0005e9a0();" (assignment_expression "iVar20 = FUN_0005e9a0()" identifier = (call_expression "FUN_0005e9a0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }" if (parenthesized_expression "(*(char *)(iVar19 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar19 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar19 + 0x4d)" * (cast_expression "(char *)(iVar19 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x4d)" ( (binary_expression "iVar19 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              FUN_000cb850();\n            }" { (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar20 != 0) {\n              FUN_00063d60();\n            }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_00063d60();\n            }" { (expression_statement "FUN_00063d60();" (call_expression "FUN_00063d60()" identifier (argument_list "()" ( ))) ;) })) }))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar19 = iVar18 + 1;" (assignment_expression "iVar19 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18)" ( identifier , (binary_expression "unaff_EDI + 0x6ddf5" identifier + number_literal) , (pointer_expression "*puVar12" * identifier) , identifier ))) ;) (expression_statement "uVar13 = (uint)*(ushort *)(puVar12 + 0xd);" (assignment_expression "uVar13 = (uint)*(ushort *)(puVar12 + 0xd)" identifier = (binary_expression "(uint)*(ushort *)(puVar12 + 0xd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" identifier = identifier) ;) }) while (parenthesized_expression "(iVar19 < (int)uVar13)" ( (binary_expression "iVar19 < (int)uVar13" identifier < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);" statement_identifier : (expression_statement "iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar18 = *(int *)(extraout_ECX + local_9c * 4)" identifier = (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" * (cast_expression "(int *)(extraout_ECX + local_9c * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_ECX + local_9c * 4)" ( (binary_expression "extraout_ECX + local_9c * 4" identifier + (binary_expression "local_9c * 4" identifier * number_literal)) ))))) ;)) }))) (expression_statement "FUN_00072f80(uVar13,iVar18);" (call_expression "FUN_00072f80(uVar13,iVar18)" identifier (argument_list "(uVar13,iVar18)" ( identifier , identifier ))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12)" identifier (argument_list "(piVar11,unaff_EDI + 0x6ddee,*puVar12)" ( identifier , (binary_expression "unaff_EDI + 0x6ddee" identifier + number_literal) , (pointer_expression "*puVar12" * identifier) ))) ;) (if_statement "if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }" if (parenthesized_expression "(((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0))" ( (binary_expression "((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)" (parenthesized_expression "((bVar23 && param_5 == '\0') && (local_80 == puVar12))" ( (binary_expression "(bVar23 && param_5 == '\0') && (local_80 == puVar12)" (parenthesized_expression "(bVar23 && param_5 == '\0')" ( (binary_expression "bVar23 && param_5 == '\0'" identifier && (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) )) && (parenthesized_expression "(local_80 == puVar12)" ( (binary_expression "local_80 == puVar12" identifier == identifier) ))) )) || (parenthesized_expression "(uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)" ( (comma_expression "uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0" (assignment_expression "uVar13 = (uint)*(byte *)((int)puVar12 + 0x36)" identifier = (binary_expression "(uint)*(byte *)((int)puVar12 + 0x36)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar12 + 0x36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x36)" ( (binary_expression "(int)puVar12 + 0x36" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) , (binary_expression "uVar13 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }" { (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;) })) (if_statement "if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" if (parenthesized_expression "(local_7b == 0xb)" ( (binary_expression "local_7b == 0xb" identifier == number_literal) )) (compound_statement "{\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }" { (if_statement "if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }" if (parenthesized_expression "(uVar13 == 0xb)" ( (binary_expression "uVar13 == 0xb" identifier == number_literal) )) (compound_statement "{\n          uVar13 = 2;\n        }" { (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" identifier = number_literal) ;) })) (if_statement "if (puVar12 != local_88) goto LAB_000f09ad;" if (parenthesized_expression "(puVar12 != local_88)" ( (binary_expression "puVar12 != local_88" identifier != identifier) )) (goto_statement "goto LAB_000f09ad;" goto statement_identifier ;)) (labeled_statement "LAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;" statement_identifier : (expression_statement "uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;" (assignment_expression "uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6" identifier = (binary_expression "(-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(local_6c[2] == 0) & 0xfffffffe)" ( (binary_expression "-(uint)(local_6c[2] == 0) & 0xfffffffe" (unary_expression "-(uint)(local_6c[2] == 0)" - (call_expression "(uint)(local_6c[2] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_6c[2] == 0)" ( (binary_expression "local_6c[2] == 0" (subscript_expression "local_6c[2]" identifier [ number_literal ]) == number_literal) )))) & number_literal) )) + number_literal)) ;)) (expression_statement "bVar6 = bVar23;" (assignment_expression "bVar6 = bVar23" identifier = identifier) ;) }) (else_clause "else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" else (compound_statement "{\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" { (expression_statement "uVar13 = (uint)local_7b;" (assignment_expression "uVar13 = (uint)local_7b" identifier = (cast_expression "(uint)local_7b" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (puVar12 == local_88) goto LAB_000f0c5d;" if (parenthesized_expression "(puVar12 == local_88)" ( (binary_expression "puVar12 == local_88" identifier == identifier) )) (goto_statement "goto LAB_000f0c5d;" goto statement_identifier ;)) (labeled_statement "LAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;" statement_identifier : (expression_statement "bVar6 = uVar13 == 5 || bVar23;" (assignment_expression "bVar6 = uVar13 == 5 || bVar23" identifier = (binary_expression "uVar13 == 5 || bVar23" (binary_expression "uVar13 == 5" identifier == number_literal) || identifier)) ;)) }))) (expression_statement "FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));" (call_expression "FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32))" identifier (argument_list "(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32))" ( identifier , identifier , (pointer_expression "*(undefined2 *)((int)puVar12 + 0x32)" * (cast_expression "(undefined2 *)((int)puVar12 + 0x32)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x32)" ( (binary_expression "(int)puVar12 + 0x32" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "local_b0 = iVar21;" (assignment_expression "local_b0 = iVar21" identifier = identifier) ;) (if_statement "if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }" if (parenthesized_expression "(local_80 != puVar12)" ( (binary_expression "local_80 != puVar12" identifier != identifier) )) (compound_statement "{\n        local_b0 = FUN_00045e40();\n      }" { (expression_statement "local_b0 = FUN_00045e40();" (assignment_expression "local_b0 = FUN_00045e40()" identifier = (call_expression "FUN_00045e40()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }" if (parenthesized_expression "(bVar6)" ( identifier )) (compound_statement "{\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }" { (if_statement "if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" if (parenthesized_expression "((*(byte *)(piVar16 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar16 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar16 + 9) & 0x20)" ( (binary_expression "*(byte *)(piVar16 + 9) & 0x20" (pointer_expression "*(byte *)(piVar16 + 9)" * (cast_expression "(byte *)(piVar16 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar16 + 9)" ( (binary_expression "piVar16 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }" { (expression_statement "FUN_00073150(local_b0);" (call_expression "FUN_00073150(local_b0)" identifier (argument_list "(local_b0)" ( identifier ))) ;) (if_statement "if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }" { (expression_statement "FUN_00072f80(local_84,param_4);" (call_expression "FUN_00072f80(local_84,param_4)" identifier (argument_list "(local_84,param_4)" ( identifier , identifier ))) ;) (if_statement "if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }" if (parenthesized_expression "(0 < piVar11[0x1a])" ( (binary_expression "0 < piVar11[0x1a]" number_literal < (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }" { (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) })) }) (else_clause "else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" else (compound_statement "{\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" { (if_statement "if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }" if (parenthesized_expression "((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0))" ( (binary_expression "(local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)" (parenthesized_expression "(local_80 != puVar12)" ( (binary_expression "local_80 != puVar12" identifier != identifier) )) && (parenthesized_expression "(*(short *)((int)local_80 + 0x32) != 0)" ( (binary_expression "*(short *)((int)local_80 + 0x32) != 0" (pointer_expression "*(short *)((int)local_80 + 0x32)" * (cast_expression "(short *)((int)local_80 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }" { (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));" do (compound_statement "{\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            }" { (expression_statement "iVar19 = iVar18 * 2;" (assignment_expression "iVar19 = iVar18 * 2" identifier = (binary_expression "iVar18 * 2" identifier * number_literal)) ;) (expression_statement "sVar3 = *(short *)(local_80[1] + iVar18 * 2);" (assignment_expression "sVar3 = *(short *)(local_80[1] + iVar18 * 2)" identifier = (pointer_expression "*(short *)(local_80[1] + iVar18 * 2)" * (cast_expression "(short *)(local_80[1] + iVar18 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + iVar18 * 2)" ( (binary_expression "local_80[1] + iVar18 * 2" (subscript_expression "local_80[1]" identifier [ number_literal ]) + (binary_expression "iVar18 * 2" identifier * number_literal)) ))))) ;) (if_statement "if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" if (parenthesized_expression "(*(ushort *)(puVar12 + 0xd) == 0)" ( (binary_expression "*(ushort *)(puVar12 + 0xd) == 0" (pointer_expression "*(ushort *)(puVar12 + 0xd)" * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }" { (labeled_statement "LAB_000f0f72:\n                uVar14 = 0xffffffff;" statement_identifier : (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" else (compound_statement "{\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (if_statement "if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }" if (parenthesized_expression "(sVar3 != *(short *)puVar12[1])" ( (binary_expression "sVar3 != *(short *)puVar12[1]" identifier != (pointer_expression "*(short *)puVar12[1]" * (cast_expression "(short *)puVar12[1]" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[1]" identifier [ number_literal ])))) )) (compound_statement "{\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }" { (do_statement "do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);" do (compound_statement "{\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  }" { (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (if_statement "if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;" if (parenthesized_expression "(*(ushort *)(puVar12 + 0xd) == uVar14)" ( (binary_expression "*(ushort *)(puVar12 + 0xd) == uVar14" (pointer_expression "*(ushort *)(puVar12 + 0xd)" * (cast_expression "(ushort *)(puVar12 + 0xd)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0xd)" ( (binary_expression "puVar12 + 0xd" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_000f0f72;" goto statement_identifier ;)) }) while (parenthesized_expression "(sVar3 != ((short *)puVar12[1])[uVar14])" ( (binary_expression "sVar3 != ((short *)puVar12[1])[uVar14]" identifier != (subscript_expression "((short *)puVar12[1])[uVar14]" (parenthesized_expression "((short *)puVar12[1])" ( (cast_expression "(short *)puVar12[1]" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[1]" identifier [ number_literal ])) )) [ identifier ])) )) ;) (expression_statement "uVar14 = (uint)(short)uVar14;" (assignment_expression "uVar14 = (uint)(short)uVar14" identifier = (cast_expression "(uint)(short)uVar14" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(short)uVar14" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier))) ;) })) }))) (expression_statement "iVar20 = local_b0 + iVar18;" (assignment_expression "iVar20 = local_b0 + iVar18" identifier = (binary_expression "local_b0 + iVar18" identifier + identifier)) ;) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00072f80(uVar14,iVar20);" (call_expression "FUN_00072f80(uVar14,iVar20)" identifier (argument_list "(uVar14,iVar20)" ( identifier , identifier ))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]))" identifier (argument_list "(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]))" ( identifier , (binary_expression "unaff_EDI + 0x6dd5f" identifier + number_literal) , (pointer_expression "*piVar16" * identifier) , (pointer_expression "*(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" * (cast_expression "(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" ( (binary_expression "*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]" (binary_expression "*(short *)(local_80[1] + iVar19) * 0x10" (pointer_expression "*(short *)(local_80[1] + iVar19)" * (cast_expression "(short *)(local_80[1] + iVar19)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + iVar19)" ( (binary_expression "local_80[1] + iVar19" (subscript_expression "local_80[1]" identifier [ number_literal ]) + identifier) )))) * number_literal) + (subscript_expression "piVar16[1]" identifier [ number_literal ])) )))) ))) ;) }) while (parenthesized_expression "(iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32))" ( (binary_expression "iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32)" identifier < (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) })) (if_statement "if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }" { (expression_statement "iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);" (assignment_expression "iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32)" identifier = (binary_expression "piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32)" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + (binary_expression "(uint)*(ushort *)((int)local_80 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ;) (expression_statement "iVar18 = local_b0;" (assignment_expression "iVar18 = local_b0" identifier = identifier) ;) (if_statement "if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }" if (parenthesized_expression "((*(byte *)((int)puVar12 + 0x37) & 3) == 2)" ( (binary_expression "(*(byte *)((int)puVar12 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)((int)puVar12 + 0x37) & 3)" ( (binary_expression "*(byte *)((int)puVar12 + 0x37) & 3" (pointer_expression "*(byte *)((int)puVar12 + 0x37)" * (cast_expression "(byte *)((int)puVar12 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + 0x37)" ( (binary_expression "(int)puVar12 + 0x37" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar18 = iVar21;\n            }" { (expression_statement "iVar18 = iVar21;" (assignment_expression "iVar18 = iVar21" identifier = identifier) ;) })) (if_statement "if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }" if (parenthesized_expression "(*(ushort *)((int)local_80 + 0x32) != 0)" ( (binary_expression "*(ushort *)((int)local_80 + 0x32) != 0" (pointer_expression "*(ushort *)((int)local_80 + 0x32)" * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));" do (compound_statement "{\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              }" { (while_statement "while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }" { (expression_statement "FUN_0008c270();" (call_expression "FUN_0008c270()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }" if (parenthesized_expression "(*(ushort *)((int)local_80 + 0x32) - 1 == iVar20)" ( (binary_expression "*(ushort *)((int)local_80 + 0x32) - 1 == iVar20" (binary_expression "*(ushort *)((int)local_80 + 0x32) - 1" (pointer_expression "*(ushort *)((int)local_80 + 0x32)" * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal) == identifier) )) (compound_statement "{\n                    iVar19 = local_84;\n                  }" { (expression_statement "iVar19 = local_84;" (assignment_expression "iVar19 = local_84" identifier = identifier) ;) })) (expression_statement "FUN_00072f80(iVar19,iVar18 + iVar20);" (call_expression "FUN_00072f80(iVar19,iVar18 + iVar20)" identifier (argument_list "(iVar19,iVar18 + iVar20)" ( identifier , (binary_expression "iVar18 + iVar20" identifier + identifier) ))) ;) (expression_statement "FUN_00062750(0xfffffffe);" (call_expression "FUN_00062750(0xfffffffe)" identifier (argument_list "(0xfffffffe)" ( number_literal ))) ;) (if_statement "if (piVar11[0x1a] < 1) break;" if (parenthesized_expression "(piVar11[0x1a] < 1)" ( (binary_expression "piVar11[0x1a] < 1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" * (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" ( (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) (if_statement "if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;" if (parenthesized_expression "((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20)" ( (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20" (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_000f0a30;" goto statement_identifier ;)) })) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32))" ( (binary_expression "iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32)" identifier < (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)((int)local_80 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_80 + 0x32)" ( (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) })) })) }))) })) (labeled_statement "LAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" statement_identifier : (if_statement "if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" if (parenthesized_expression "(uVar13 == 4)" ( (binary_expression "uVar13 == 4" identifier == number_literal) )) (compound_statement "{\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }" { (labeled_statement "LAB_000f0b65:\n        FUN_00073150(param_7);" statement_identifier : (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" identifier (argument_list "(param_7)" ( identifier ))) ;)) (if_statement "if (puVar12 != local_88) goto LAB_000f0a5e;" if (parenthesized_expression "(puVar12 != local_88)" ( (binary_expression "puVar12 != local_88" identifier != identifier) )) (goto_statement "goto LAB_000f0a5e;" goto statement_identifier ;)) (labeled_statement "LAB_000f0b8a:\n        FUN_00073150(local_58 + 1);" statement_identifier : (expression_statement "FUN_00073150(local_58 + 1);" (call_expression "FUN_00073150(local_58 + 1)" identifier (argument_list "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) ))) ;)) (expression_statement "iVar18 = piVar11[0x1a] + -1;" (assignment_expression "iVar18 = piVar11[0x1a] + -1" identifier = (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < local_54) {\n          iVar18 = local_54;\n        }" if (parenthesized_expression "(-1 < local_54)" ( (binary_expression "-1 < local_54" number_literal < identifier) )) (compound_statement "{\n          iVar18 = local_54;\n        }" { (expression_statement "iVar18 = local_54;" (assignment_expression "iVar18 = local_54" identifier = identifier) ;) })) (expression_statement "iVar19 = unaff_EDI + 0xccb05;" (assignment_expression "iVar19 = unaff_EDI + 0xccb05" identifier = (binary_expression "unaff_EDI + 0xccb05" identifier + number_literal)) ;) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }" { (expression_statement "iVar19 = piVar11[0x19] + iVar18 * 0x18;" (assignment_expression "iVar19 = piVar11[0x19] + iVar18 * 0x18" identifier = (binary_expression "piVar11[0x19] + iVar18 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar18 * 0x18" identifier * number_literal))) ;) })) (expression_statement "*(int *)(iVar19 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar19 + 8) = piVar11[0x1a]" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" else (compound_statement "{\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" { (if_statement "if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" if (parenthesized_expression "((int)uVar13 < 5)" ( (binary_expression "(int)uVar13 < 5" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }" { (if_statement "if ((int)uVar13 < 1) goto LAB_000f0c80;" if (parenthesized_expression "((int)uVar13 < 1)" ( (binary_expression "(int)uVar13 < 1" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_000f0c80;" goto statement_identifier ;)) (expression_statement "FUN_00097090();" (call_expression "FUN_00097090()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" else (compound_statement "{\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" { (if_statement "if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }" if (parenthesized_expression "(uVar13 == 6)" ( (binary_expression "uVar13 == 6" identifier == number_literal) )) (compound_statement "{\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }" { (expression_statement "FUN_000f3260(puVar12,local_9c + param_2);" (call_expression "FUN_000f3260(puVar12,local_9c + param_2)" identifier (argument_list "(puVar12,local_9c + param_2)" ( identifier , (binary_expression "local_9c + param_2" identifier + identifier) ))) ;) (goto_statement "goto LAB_000f0b65;" goto statement_identifier ;) })) (labeled_statement "LAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" statement_identifier : (if_statement "if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" if (parenthesized_expression "((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))))))" ( (binary_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))" (parenthesized_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))" ( (binary_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0)" (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) != 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x20)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(iVar18 = FUN_00049a60(0,0), iVar18 != 0)" ( (comma_expression "iVar18 = FUN_00049a60(0,0), iVar18 != 0" (assignment_expression "iVar18 = FUN_00049a60(0,0)" identifier = (call_expression "FUN_00049a60(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) , (binary_expression "iVar18 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))" ( (parenthesized_expression "((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))))" ( (binary_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))" (binary_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40)" ( (binary_expression "*(byte *)(*piVar10 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*piVar10 + 0x1d)" * (cast_expression "(byte *)(*piVar10 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar10 + 0x1d)" ( (binary_expression "*piVar10 + 0x1d" (pointer_expression "*piVar10" * identifier) + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))" ( (parenthesized_expression "(iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))" ( (comma_expression "iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)" (assignment_expression "iVar18 = FUN_00049430()" identifier = (call_expression "FUN_00049430()" identifier (argument_list "()" ( )))) , (binary_expression "*(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)" (binary_expression "*(int *)(iVar18 + 8) != 0" (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) )))) != number_literal) || (parenthesized_expression "(piVar16[4] != 0)" ( (binary_expression "piVar16[4] != 0" (subscript_expression "piVar16[4]" identifier [ number_literal ]) != number_literal) )))) )) ))) )) ))) )) (compound_statement "{\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" { (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar15 = piVar10;\n            }" { (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" identifier = identifier) ;) })) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" * (cast_expression "(undefined1 *)(piVar15 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar15 + 5)" ( (binary_expression "piVar15 + 5" identifier + number_literal) )))) = number_literal) ;) }))) (expression_statement "FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);" (call_expression "FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2)" identifier (argument_list "(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2)" ( identifier , identifier , identifier , (cast_expression "(int)(short)local_78" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_78" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) , number_literal , number_literal , (binary_expression "local_80 == puVar12" identifier == identifier) , (binary_expression "local_9c + param_2" identifier + identifier) ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) (if_statement "if (puVar12 == local_88) goto LAB_000f0b8a;" if (parenthesized_expression "(puVar12 == local_88)" ( (binary_expression "puVar12 == local_88" identifier == identifier) )) (goto_statement "goto LAB_000f0b8a;" goto statement_identifier ;)) (labeled_statement "LAB_000f0a5e:\n        FUN_0006dec0();" statement_identifier : (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" identifier (argument_list "()" ( ))) ;)) })))) (if_statement "if (local_b0 == iVar21) goto LAB_000f0608;" if (parenthesized_expression "(local_b0 == iVar21)" ( (binary_expression "local_b0 == iVar21" identifier == identifier) )) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;)) (if_statement "if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" if (parenthesized_expression "(local_78 == 1)" ( (binary_expression "local_78 == 1" identifier == number_literal) )) (compound_statement "{\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" { (if_statement "if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }" if (parenthesized_expression "(local_b0 != 0)" ( (binary_expression "local_b0 != 0" identifier != number_literal) )) (compound_statement "{\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }" { (expression_statement "bVar2 = *(byte *)((int)piVar10 + 0x13);" (assignment_expression "bVar2 = *(byte *)((int)piVar10 + 0x13)" identifier = (pointer_expression "*(byte *)((int)piVar10 + 0x13)" * (cast_expression "(byte *)((int)piVar10 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }" if (parenthesized_expression "(bVar2 < 8)" ( (binary_expression "bVar2 < 8" identifier < number_literal) )) (compound_statement "{\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }" { (expression_statement "*(byte *)((int)piVar10 + 0x13) = bVar2 + 1;" (assignment_expression "*(byte *)((int)piVar10 + 0x13) = bVar2 + 1" (pointer_expression "*(byte *)((int)piVar10 + 0x13)" * (cast_expression "(byte *)((int)piVar10 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar2 + 1" identifier + number_literal)) ;) (expression_statement "piVar10[bVar2 + 0x24] = local_b0;" (assignment_expression "piVar10[bVar2 + 0x24] = local_b0" (subscript_expression "piVar10[bVar2 + 0x24]" identifier [ (binary_expression "bVar2 + 0x24" identifier + number_literal) ]) = identifier) ;) })) })) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;) })) (if_statement "if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;" if (parenthesized_expression "((int)local_78 <= piVar10[7])" ( (binary_expression "(int)local_78 <= piVar10[7]" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) <= (subscript_expression "piVar10[7]" identifier [ number_literal ])) )) (goto_statement "goto LAB_000f0608;" goto statement_identifier ;)) (expression_statement "piVar10[7] = local_78;" (assignment_expression "piVar10[7] = local_78" (subscript_expression "piVar10[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) (expression_statement "piVar10[8] = local_b0;" (assignment_expression "piVar10[8] = local_b0" (subscript_expression "piVar10[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar12 = (undefined4 *)puVar12[5];" (assignment_expression "puVar12 = (undefined4 *)puVar12[5]" identifier = (cast_expression "(undefined4 *)puVar12[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar12[5]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(puVar12 != (undefined4 *)0x0)" ( (binary_expression "puVar12 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;" statement_identifier : (if_statement "if (local_60 == 0) goto LAB_000f0b10;" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000f0b10;" goto statement_identifier ;))) }))) (expression_statement "FUN_00073150(local_60);" (call_expression "FUN_00073150(local_60)" identifier (argument_list "(local_60)" ( identifier ))) ;) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6de02);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6de02)" identifier (argument_list "(piVar11,unaff_EDI + 0x6de02)" ( identifier , (binary_expression "unaff_EDI + 0x6de02" identifier + number_literal) ))) ;) (expression_statement "iVar4 = piVar11[0x1a];" (assignment_expression "iVar4 = piVar11[0x1a]" identifier = (subscript_expression "piVar11[0x1a]" identifier [ number_literal ])) ;) (expression_statement "iVar21 = iVar4 + -1;" (assignment_expression "iVar21 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (-1 < local_48) {\n    iVar21 = local_48;\n  }" if (parenthesized_expression "(-1 < local_48)" ( (binary_expression "-1 < local_48" number_literal < identifier) )) (compound_statement "{\n    iVar21 = local_48;\n  }" { (expression_statement "iVar21 = local_48;" (assignment_expression "iVar21 = local_48" identifier = identifier) ;) })) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" if (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" * (cast_expression "(char *)(*piVar11 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + 0x4d)" ( (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }" { (expression_statement "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;" (assignment_expression "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4" (pointer_expression "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8)" * (cast_expression "(int *)(piVar11[0x19] + iVar21 * 0x18 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11[0x19] + iVar21 * 0x18 + 8)" ( (binary_expression "piVar11[0x19] + iVar21 * 0x18 + 8" (binary_expression "piVar11[0x19] + iVar21 * 0x18" (subscript_expression "piVar11[0x19]" identifier [ number_literal ]) + (binary_expression "iVar21 * 0x18" identifier * number_literal)) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" else (compound_statement "{\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" { (expression_statement "*(int *)(unaff_EDI + 0xccb0d) = iVar4;" (assignment_expression "*(int *)(unaff_EDI + 0xccb0d) = iVar4" (pointer_expression "*(int *)(unaff_EDI + 0xccb0d)" * (cast_expression "(int *)(unaff_EDI + 0xccb0d)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xccb0d)" ( (binary_expression "unaff_EDI + 0xccb0d" identifier + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_000f0b10:\n  *param_8 = local_5c;" statement_identifier : (expression_statement "*param_8 = local_5c;" (assignment_expression "*param_8 = local_5c" (pointer_expression "*param_8" * identifier) = identifier) ;)) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_00153870();\n  }" { (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (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)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) == IDENT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) < LIT) ))) )) ))) )) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) , (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression IDENT + LIT) + IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + 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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression ~ IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT != (char_literal ' escape_sequence ')) & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;))) (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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (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 , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) + IDENT) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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 (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression & IDENT) + IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 ( IDENT , IDENT , IDENT , LIT , LIT , LIT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_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 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 = (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)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_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 ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression 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) ;) })) (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 ])) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression ~ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_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) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , LIT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , LIT ))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (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) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression ~ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) + 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) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT && (binary_expression IDENT == (char_literal ' escape_sequence '))) )) && (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )))) & LIT) )) + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || IDENT)) ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (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) ;) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )) [ IDENT ])) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT))) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) * LIT) + (subscript_expression IDENT [ LIT ])) )))) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (parenthesized_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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) ;) })) })) }))) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (binary_expression 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 ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) != LIT) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (parenthesized_expression ( (binary_expression (subscript_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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (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 ( IDENT , IDENT , IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) , LIT , LIT , (binary_expression IDENT == IDENT) , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) })) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)\n\n{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000efeb0(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)" (identifier "FUN_000efeb0") (parameter_list "(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,\n                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "char param_5" (primitive_type "char") (identifier "param_5")) (, ",") (parameter_declaration "byte param_6" (type_identifier "byte") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 *param_8" (type_identifier "undefined4") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "int *param_10" (primitive_type "int") (pointer_declarator "*param_10" (* "*") (identifier "param_10"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  byte bVar2;\n  short sVar3;\n  int iVar4;\n  code *pcVar5;\n  bool bVar6;\n  byte bVar7;\n  byte bVar8;\n  char cVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined4 *puVar12;\n  uint uVar13;\n  uint uVar14;\n  int *piVar15;\n  int extraout_ECX;\n  int *piVar16;\n  bool bVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int unaff_EDI;\n  int iVar21;\n  int *piVar22;\n  int in_GS_OFFSET;\n  bool bVar23;\n  undefined8 uVar24;\n  int local_b0;\n  int local_ac;\n  int local_a8;\n  int local_9c;\n  undefined4 *local_88;\n  int local_84;\n  undefined4 *local_80;\n  byte local_7b;\n  uint local_78;\n  int *local_6c;\n  int local_60;\n  undefined4 local_5c;\n  int local_58;\n  int local_54;\n  int local_48;\n  int local_3c [5];\n  byte local_28;\n  int local_24;\n  int local_20;\n  \n  uVar24 = FUN_0003a401();\n  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);\n  piVar10 = (int *)uVar24;\n  piVar11 = (int *)piVar10[2];\n  local_6c = param_10;\n  local_7b = param_6;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar4 = *piVar10;\n  bVar23 = param_4 != 0;\n  if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }\n  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);\n  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }\n  iVar18 = 0;\n  if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }\nLAB_000f0158:\n  piVar15 = (int *)piVar16[6];\n  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }\n  bVar17 = (bool)(param_5 != '\0' & bVar2);\n  if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }\n  FUN_00073150(local_60);\n  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);\n  iVar4 = piVar11[0x1a];\n  iVar21 = iVar4 + -1;\n  if (-1 < local_48) {\n    iVar21 = local_48;\n  }\n  if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }\nLAB_000f0b10:\n  *param_8 = local_5c;\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "short sVar3;" (sized_type_specifier "short" (short "short")) (identifier "sVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "char cVar9;" (primitive_type "char") (identifier "cVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int *piVar22;" (primitive_type "int") (pointer_declarator "*piVar22" (* "*") (identifier "piVar22")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar23;" (primitive_type "bool") (identifier "bVar23") (; ";")) (declaration "undefined8 uVar24;" (type_identifier "undefined8") (identifier "uVar24") (; ";")) (declaration "int local_b0;" (primitive_type "int") (identifier "local_b0") (; ";")) (declaration "int local_ac;" (primitive_type "int") (identifier "local_ac") (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "undefined4 *local_88;" (type_identifier "undefined4") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "undefined4 *local_80;" (type_identifier "undefined4") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "byte local_7b;" (type_identifier "byte") (identifier "local_7b") (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "int *local_6c;" (primitive_type "int") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_3c [5];" (primitive_type "int") (array_declarator "local_3c [5]" (identifier "local_3c") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "byte local_28;" (type_identifier "byte") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar24 = FUN_0003a401();" (assignment_expression "uVar24 = FUN_0003a401()" (identifier "uVar24") (= "=") (call_expression "FUN_0003a401()" (identifier "FUN_0003a401") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar16 = (int *)((ulonglong)uVar24 >> 0x20);" (assignment_expression "piVar16 = (int *)((ulonglong)uVar24 >> 0x20)" (identifier "piVar16") (= "=") (cast_expression "(int *)((ulonglong)uVar24 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar24 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar24 >> 0x20" (cast_expression "(ulonglong)uVar24" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar24")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar10 = (int *)uVar24;" (assignment_expression "piVar10 = (int *)uVar24" (identifier "piVar10") (= "=") (cast_expression "(int *)uVar24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar24"))) (; ";")) (expression_statement "piVar11 = (int *)piVar10[2];" (assignment_expression "piVar11 = (int *)piVar10[2]" (identifier "piVar11") (= "=") (cast_expression "(int *)piVar10[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_6c = param_10;" (assignment_expression "local_6c = param_10" (identifier "local_6c") (= "=") (identifier "param_10")) (; ";")) (expression_statement "local_7b = param_6;" (assignment_expression "local_7b = param_6" (identifier "local_7b") (= "=") (identifier "param_6")) (; ";")) (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 "iVar4 = *piVar10;" (assignment_expression "iVar4 = *piVar10" (identifier "iVar4") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "bVar23 = param_4 != 0;" (assignment_expression "bVar23 = param_4 != 0" (identifier "bVar23") (= "=") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if (piVar11 == (int *)0x0) {\n    piVar11 = (int *)FUN_00073350();\n  }" (if "if") (parenthesized_expression "(piVar11 == (int *)0x0)" (( "(") (binary_expression "piVar11 == (int *)0x0" (identifier "piVar11") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    piVar11 = (int *)FUN_00073350();\n  }" ({ "{") (expression_statement "piVar11 = (int *)FUN_00073350();" (assignment_expression "piVar11 = (int *)FUN_00073350()" (identifier "piVar11") (= "=") (cast_expression "(int *)FUN_00073350()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00073350()" (identifier "FUN_00073350") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar21 = (int)*(short *)((int)piVar16 + 0x2a);" (assignment_expression "iVar21 = (int)*(short *)((int)piVar16 + 0x2a)" (identifier "iVar21") (= "=") (cast_expression "(int)*(short *)((int)piVar16 + 0x2a)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)((int)piVar16 + 0x2a)" (* "*") (cast_expression "(short *)((int)piVar16 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar16 + 0x2a)" (( "(") (binary_expression "(int)piVar16 + 0x2a" (cast_expression "(int)piVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar16")) (+ "+") (number_literal "0x2a")) () ")")))))) (; ";")) (if_statement "if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }\n  else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" (if "if") (parenthesized_expression "((*(byte *)(piVar16 + 9) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(piVar16 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar16 + 9) & 0x20)" (( "(") (binary_expression "*(byte *)(piVar16 + 9) & 0x20" (pointer_expression "*(byte *)(piVar16 + 9)" (* "*") (cast_expression "(byte *)(piVar16 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16 + 9)" (( "(") (binary_expression "piVar16 + 9" (identifier "piVar16") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar2 = 1;\n    local_78 = 1;\n    local_80 = (undefined4 *)0x0;\n  }" ({ "{") (expression_statement "bVar2 = 1;" (assignment_expression "bVar2 = 1" (identifier "bVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" (identifier "local_78") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_80 = (undefined4 *)0x0;" (assignment_expression "local_80 = (undefined4 *)0x0" (identifier "local_80") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" (else "else") (compound_statement "{\n    local_80 = (undefined4 *)piVar16[2];\n    if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }\n    bVar2 = *(byte *)((int)local_80 + 0x37);\n    while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }\n    bVar2 = 0;\n    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);\n  }" ({ "{") (expression_statement "local_80 = (undefined4 *)piVar16[2];" (assignment_expression "local_80 = (undefined4 *)piVar16[2]" (identifier "local_80") (= "=") (cast_expression "(undefined4 *)piVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (local_80 == (undefined4 *)0x0) {\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }" (if "if") (parenthesized_expression "(local_80 == (undefined4 *)0x0)" (( "(") (binary_expression "local_80 == (undefined4 *)0x0" (identifier "local_80") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nFUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();\n      (*pcVar5)();\n    }" ({ "{") (labeled_statement "FUN_000157a6:\n                    \n      pcVar5 = (code *)invalidInstructionException();" (statement_identifier "FUN_000157a6") (: ":") (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" (identifier "pcVar5") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "bVar2 = *(byte *)((int)local_80 + 0x37);" (assignment_expression "bVar2 = *(byte *)((int)local_80 + 0x37)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)local_80 + 0x37)" (* "*") (cast_expression "(byte *)((int)local_80 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x37)" (( "(") (binary_expression "(int)local_80 + 0x37" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x37")) () ")"))))) (; ";")) (while_statement "while ((bVar2 & 3) != 2) {\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }" (while "while") (parenthesized_expression "((bVar2 & 3) != 2)" (( "(") (binary_expression "(bVar2 & 3) != 2" (parenthesized_expression "(bVar2 & 3)" (( "(") (binary_expression "bVar2 & 3" (identifier "bVar2") (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      local_80 = (undefined4 *)local_80[5];\n      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;\n      bVar2 = *(byte *)((int)local_80 + 0x37);\n    }" ({ "{") (expression_statement "local_80 = (undefined4 *)local_80[5];" (assignment_expression "local_80 = (undefined4 *)local_80[5]" (identifier "local_80") (= "=") (cast_expression "(undefined4 *)local_80[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[5]" (identifier "local_80") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;" (if "if") (parenthesized_expression "(local_80 == (undefined4 *)0x0)" (( "(") (binary_expression "local_80 == (undefined4 *)0x0" (identifier "local_80") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto FUN_000157a6;" (goto "goto") (statement_identifier "FUN_000157a6") (; ";"))) (expression_statement "bVar2 = *(byte *)((int)local_80 + 0x37);" (assignment_expression "bVar2 = *(byte *)((int)local_80 + 0x37)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)local_80 + 0x37)" (* "*") (cast_expression "(byte *)((int)local_80 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x37)" (( "(") (binary_expression "(int)local_80 + 0x37" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x37")) () ")"))))) (; ";")) (} "}"))) (expression_statement "bVar2 = 0;" (assignment_expression "bVar2 = 0" (identifier "bVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = (uint)*(ushort *)((int)local_80 + 0x32);" (assignment_expression "local_78 = (uint)*(ushort *)((int)local_80 + 0x32)" (identifier "local_78") (= "=") (binary_expression "(uint)*(ushort *)((int)local_80 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < iVar21) {\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }" (if "if") (parenthesized_expression "(0 < iVar21)" (( "(") (binary_expression "0 < iVar21" (number_literal "0") (< "<") (identifier "iVar21")) () ")")) (compound_statement "{\n    do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);\n  }" ({ "{") (do_statement "do {\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    } while (iVar21 != iVar18);" (do "do") (compound_statement "{\n      while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }\n      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      bVar7 = *(byte *)(puVar12 + 3);\n      if (bVar7 == 0) goto LAB_000f0048;\n      bVar8 = param_6;\n      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }\n      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);\n      FUN_00072f80(bVar8,param_3 + 1 + iVar18);\n      if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }\n      if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }\n      if (local_a8 == 0) goto LAB_000f0048;\n      iVar18 = iVar18 + 1;\n      FUN_0006dec0();\n    }" ({ "{") (while_statement "while (((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }" (while "while") (parenthesized_expression "(((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))))" (( "(") (parenthesized_expression "((short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))" (( "(") (binary_expression "(short)piVar16[10] == iVar18 ||\n             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))" (binary_expression "(short)piVar16[10] == iVar18" (cast_expression "(short)piVar16[10]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "piVar16[10]" (identifier "piVar16") ([ "[") (number_literal "10") (] "]"))) (== "==") (identifier "iVar18")) (|| "||") (parenthesized_expression "((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)))" (( "(") (parenthesized_expression "(param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))" (( "(") (binary_expression "param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0)" (binary_expression "param_9 != 0" (identifier "param_9") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(int *)(param_9 + iVar18 * 4) < 0)" (( "(") (binary_expression "*(int *)(param_9 + iVar18 * 4) < 0" (pointer_expression "*(int *)(param_9 + iVar18 * 4)" (* "*") (cast_expression "(int *)(param_9 + iVar18 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_9 + iVar18 * 4)" (( "(") (binary_expression "param_9 + iVar18 * 4" (identifier "param_9") (+ "+") (binary_expression "iVar18 * 4" (identifier "iVar18") (* "*") (number_literal "4"))) () ")")))) (< "<") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\nLAB_000f0048:\n        iVar18 = iVar18 + 1;\n        if (iVar21 == iVar18) goto LAB_000f0158;\n      }" ({ "{") (labeled_statement "LAB_000f0048:\n        iVar18 = iVar18 + 1;" (statement_identifier "LAB_000f0048") (: ":") (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (iVar21 == iVar18) goto LAB_000f0158;" (if "if") (parenthesized_expression "(iVar21 == iVar18)" (( "(") (binary_expression "iVar21 == iVar18" (identifier "iVar21") (== "==") (identifier "iVar18")) () ")")) (goto_statement "goto LAB_000f0158;" (goto "goto") (statement_identifier "LAB_000f0158") (; ";"))) (} "}"))) (expression_statement "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);" (assignment_expression "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)(piVar16[1] + iVar18 * 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[1] + iVar18 * 0x10)" (( "(") (binary_expression "piVar16[1] + iVar18 * 0x10" (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar18 * 0x10" (identifier "iVar18") (* "*") (number_literal "0x10"))) () ")")))) (; ";")) (expression_statement "bVar7 = *(byte *)(puVar12 + 3);" (assignment_expression "bVar7 = *(byte *)(puVar12 + 3)" (identifier "bVar7") (= "=") (pointer_expression "*(byte *)(puVar12 + 3)" (* "*") (cast_expression "(byte *)(puVar12 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 3)" (( "(") (binary_expression "puVar12 + 3" (identifier "puVar12") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (bVar7 == 0) goto LAB_000f0048;" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000f0048;" (goto "goto") (statement_identifier "LAB_000f0048") (; ";"))) (expression_statement "bVar8 = param_6;" (assignment_expression "bVar8 = param_6" (identifier "bVar8") (= "=") (identifier "param_6")) (; ";")) (if_statement "if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }\n      else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" (if "if") (parenthesized_expression "((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb))" (( "(") (binary_expression "(param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)" (parenthesized_expression "(param_6 == 0xb)" (( "(") (binary_expression "param_6 == 0xb" (identifier "param_6") (== "==") (number_literal "0xb")) () ")")) (&& "&&") (parenthesized_expression "(bVar8 = bVar7, bVar7 == 0xb)" (( "(") (comma_expression "bVar8 = bVar7, bVar7 == 0xb" (assignment_expression "bVar8 = bVar7" (identifier "bVar8") (= "=") (identifier "bVar7")) (, ",") (binary_expression "bVar7 == 0xb" (identifier "bVar7") (== "==") (number_literal "0xb"))) () ")"))) () ")")) (compound_statement "{\nLAB_000f009f:\n        local_a8 = 0;\nLAB_000f00a7:\n        bVar8 = 2;\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)((int)piVar15 + 0x15) = 1;\n        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);\n      }" ({ "{") (labeled_statement "LAB_000f009f:\n        local_a8 = 0;" (statement_identifier "LAB_000f009f") (: ":") (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_000f00a7:\n        bVar8 = 2;" (statement_identifier "LAB_000f00a7") (: ":") (expression_statement "bVar8 = 2;" (assignment_expression "bVar8 = 2" (identifier "bVar8") (= "=") (number_literal "2")) (; ";"))) (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }" (if "if") (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar15 = piVar10;\n        }" ({ "{") (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" (identifier "piVar15") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)piVar15 + 0x15) = 1;" (assignment_expression "*(undefined1 *)((int)piVar15 + 0x15) = 1" (pointer_expression "*(undefined1 *)((int)piVar15 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)piVar15 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + 0x15)" (( "(") (binary_expression "(int)piVar15 + 0x15" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);" (assignment_expression "puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)(piVar16[1] + iVar18 * 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16[1] + iVar18 * 0x10)" (( "(") (binary_expression "piVar16[1] + iVar18 * 0x10" (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar18 * 0x10" (identifier "iVar18") (* "*") (number_literal "0x10"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" (else "else") (compound_statement "{\n        if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }\n        if (bVar8 == 2) goto LAB_000f009f;\n        if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }\n        local_a8 = 0;\n      }" ({ "{") (if_statement "if (bVar8 == 5) {\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }" (if "if") (parenthesized_expression "(bVar8 == 5)" (( "(") (binary_expression "bVar8 == 5" (identifier "bVar8") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          local_a8 = 0;\n          if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }\n          goto LAB_000f00a7;\n        }" ({ "{") (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar12[1] != 0) {\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }" (if "if") (parenthesized_expression "(puVar12[1] != 0)" (( "(") (binary_expression "puVar12[1] != 0" (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;\n            piVar10[0xe] = local_a8;\n            FUN_00073150(local_a8);\n            FUN_000cb850();\n            FUN_00073150(local_a8);\n          }" ({ "{") (labeled_statement "LAB_000f04a3:\n            local_a8 = piVar10[0xe] + -1;" (statement_identifier "LAB_000f04a3") (: ":") (expression_statement "local_a8 = piVar10[0xe] + -1;" (assignment_expression "local_a8 = piVar10[0xe] + -1" (identifier "local_a8") (= "=") (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "piVar10[0xe] = local_a8;" (assignment_expression "piVar10[0xe] = local_a8" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_a8")) (; ";")) (expression_statement "FUN_00073150(local_a8);" (call_expression "FUN_00073150(local_a8)" (identifier "FUN_00073150") (argument_list "(local_a8)" (( "(") (identifier "local_a8") () ")"))) (; ";")) (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" (identifier "FUN_000cb850") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00073150(local_a8);" (call_expression "FUN_00073150(local_a8)" (identifier "FUN_00073150") (argument_list "(local_a8)" (( "(") (identifier "local_a8") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000f00a7;" (goto "goto") (statement_identifier "LAB_000f00a7") (; ";")) (} "}"))) (if_statement "if (bVar8 == 2) goto LAB_000f009f;" (if "if") (parenthesized_expression "(bVar8 == 2)" (( "(") (binary_expression "bVar8 == 2" (identifier "bVar8") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_000f009f;" (goto "goto") (statement_identifier "LAB_000f009f") (; ";"))) (if_statement "if (bVar8 < 3) {\n          if (bVar8 != 1) goto LAB_000f0025;\n        }\n        else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" (if "if") (parenthesized_expression "(bVar8 < 3)" (( "(") (binary_expression "bVar8 < 3" (identifier "bVar8") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          if (bVar8 != 1) goto LAB_000f0025;\n        }" ({ "{") (if_statement "if (bVar8 != 1) goto LAB_000f0025;" (if "if") (parenthesized_expression "(bVar8 != 1)" (( "(") (binary_expression "bVar8 != 1" (identifier "bVar8") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_000f0025;" (goto "goto") (statement_identifier "LAB_000f0025") (; ";"))) (} "}")) (else_clause "else if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" (else "else") (if_statement "if (bVar8 != 3) {\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" (if "if") (parenthesized_expression "(bVar8 != 3)" (( "(") (binary_expression "bVar8 != 3" (identifier "bVar8") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n          if (bVar8 == 5) goto LAB_000f04a3;\nLAB_000f0025:\n          FUN_00073150(param_7);\n          goto LAB_000f0048;\n        }" ({ "{") (if_statement "if (bVar8 == 5) goto LAB_000f04a3;" (if "if") (parenthesized_expression "(bVar8 == 5)" (( "(") (binary_expression "bVar8 == 5" (identifier "bVar8") (== "==") (number_literal "5")) () ")")) (goto_statement "goto LAB_000f04a3;" (goto "goto") (statement_identifier "LAB_000f04a3") (; ";"))) (labeled_statement "LAB_000f0025:\n          FUN_00073150(param_7);" (statement_identifier "LAB_000f0025") (: ":") (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" (identifier "FUN_00073150") (argument_list "(param_7)" (( "(") (identifier "param_7") () ")"))) (; ";"))) (goto_statement "goto LAB_000f0048;" (goto "goto") (statement_identifier "LAB_000f0048") (; ";")) (} "}"))))) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);" (assignment_expression "iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" (identifier "iVar19") (= "=") (call_expression "FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" (identifier "FUN_000861f0") (argument_list "(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12)" (( "(") (identifier "iVar4") (, ",") (binary_expression "unaff_EDI + 0x6dd5f" (identifier "unaff_EDI") (+ "+") (number_literal "0x6dd5f")) (, ",") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (, ",") (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) () ")")))) (; ";")) (expression_statement "FUN_00072f80(bVar8,param_3 + 1 + iVar18);" (call_expression "FUN_00072f80(bVar8,param_3 + 1 + iVar18)" (identifier "FUN_00072f80") (argument_list "(bVar8,param_3 + 1 + iVar18)" (( "(") (identifier "bVar8") (, ",") (binary_expression "param_3 + 1 + iVar18" (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar18")) () ")"))) (; ";")) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }\n      else if (iVar19 != 0) {\n        FUN_00044090();\n      }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar11 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x4d)" (( "(") (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;\n        *(undefined1 *)(iVar20 + 1) = 0xf9;\n        *(int *)(iVar20 + 0x10) = iVar19;\n      }" ({ "{") (expression_statement "iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;" (assignment_expression "iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18" (identifier "iVar20") (= "=") (binary_expression "piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18" (binary_expression "piVar11[0x19] + -0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (number_literal "-0x18")) (+ "+") (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x18")))) (; ";")) (expression_statement "*(undefined1 *)(iVar20 + 1) = 0xf9;" (assignment_expression "*(undefined1 *)(iVar20 + 1) = 0xf9" (pointer_expression "*(undefined1 *)(iVar20 + 1)" (* "*") (cast_expression "(undefined1 *)(iVar20 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 1)" (( "(") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0xf9")) (; ";")) (expression_statement "*(int *)(iVar20 + 0x10) = iVar19;" (assignment_expression "*(int *)(iVar20 + 0x10) = iVar19" (pointer_expression "*(int *)(iVar20 + 0x10)" (* "*") (cast_expression "(int *)(iVar20 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar20 + 0x10)" (( "(") (binary_expression "iVar20 + 0x10" (identifier "iVar20") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (} "}")) (else_clause "else if (iVar19 != 0) {\n        FUN_00044090();\n      }" (else "else") (if_statement "if (iVar19 != 0) {\n        FUN_00044090();\n      }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00044090();\n      }" ({ "{") (expression_statement "FUN_00044090();" (call_expression "FUN_00044090()" (identifier "FUN_00044090") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))))) (if_statement "if (0 < piVar11[0x1a]) {\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }" (if "if") (parenthesized_expression "(0 < piVar11[0x1a])" (( "(") (binary_expression "0 < piVar11[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;\n      }" ({ "{") (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (* "*") (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x18"))) (+ "+") (number_literal "-0x16")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (local_a8 == 0) goto LAB_000f0048;" (if "if") (parenthesized_expression "(local_a8 == 0)" (( "(") (binary_expression "local_a8 == 0" (identifier "local_a8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000f0048;" (goto "goto") (statement_identifier "LAB_000f0048") (; ";"))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" (identifier "FUN_0006dec0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 != iVar18)" (( "(") (binary_expression "iVar21 != iVar18" (identifier "iVar21") (!= "!=") (identifier "iVar18")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000f0158:\n  piVar15 = (int *)piVar16[6];" (statement_identifier "LAB_000f0158") (: ":") (expression_statement "piVar15 = (int *)piVar16[6];" (assignment_expression "piVar15 = (int *)piVar16[6]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar16[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[6]" (identifier "piVar16") ([ "[") (number_literal "6") (] "]")))) (; ";"))) (if_statement "if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }" (if "if") (parenthesized_expression "((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0))" (( "(") (binary_expression "(piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)" (parenthesized_expression "(piVar15 != (int *)0x0)" (( "(") (binary_expression "piVar15 != (int *)0x0" (identifier "piVar15") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x1d) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 2)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x1d) & 2" (pointer_expression "*(byte *)(iVar4 + 0x1d)" (* "*") (cast_expression "(byte *)(iVar4 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1d)" (( "(") (binary_expression "iVar4 + 0x1d" (identifier "iVar4") (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    local_ac = 0;\n    piVar10[0xd] = ~param_3;\n    bVar7 = 2;\n    if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }\n    piVar22 = piVar15 + 1;\n    if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }\n    piVar10[0xd] = 0;\n  }" ({ "{") (expression_statement "local_ac = 0;" (assignment_expression "local_ac = 0" (identifier "local_ac") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" (identifier "piVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (unary_expression "~param_3" (~ "~") (identifier "param_3"))) (; ";")) (expression_statement "bVar7 = 2;" (assignment_expression "bVar7 = 2" (identifier "bVar7") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_6 != 0xb) {\n      bVar7 = param_6;\n    }" (if "if") (parenthesized_expression "(param_6 != 0xb)" (( "(") (binary_expression "param_6 != 0xb" (identifier "param_6") (!= "!=") (number_literal "0xb")) () ")")) (compound_statement "{\n      bVar7 = param_6;\n    }" ({ "{") (expression_statement "bVar7 = param_6;" (assignment_expression "bVar7 = param_6" (identifier "bVar7") (= "=") (identifier "param_6")) (; ";")) (} "}"))) (expression_statement "piVar22 = piVar15 + 1;" (assignment_expression "piVar22 = piVar15 + 1" (identifier "piVar22") (= "=") (binary_expression "piVar15 + 1" (identifier "piVar15") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0 < *piVar15) {\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }" (if "if") (parenthesized_expression "(0 < *piVar15)" (( "(") (binary_expression "0 < *piVar15" (number_literal "0") (< "<") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) () ")")) (compound_statement "{\n      do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);\n    }" ({ "{") (do_statement "do {\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      } while (local_ac < *piVar15);" (do "do") (compound_statement "{\n        iVar21 = *piVar22;\n        uVar13 = 0;\n        if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }\n        local_ac = local_ac + 1;\n        piVar22 = piVar22 + 5;\n      }" ({ "{") (expression_statement "iVar21 = *piVar22;" (assignment_expression "iVar21 = *piVar22" (identifier "iVar21") (= "=") (pointer_expression "*piVar22" (* "*") (identifier "piVar22"))) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_9 == 0) {\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }\n        else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" (if "if") (parenthesized_expression "(param_9 == 0)" (( "(") (binary_expression "param_9 == 0" (identifier "param_9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000f023c:\n          iVar18 = piVar10[0xe];\n          piVar10[0xe] = iVar18 + -1;\n          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);\n          if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }\n          FUN_0006dec0();\n        }" ({ "{") (labeled_statement "LAB_000f023c:\n          iVar18 = piVar10[0xe];" (statement_identifier "LAB_000f023c") (: ":") (expression_statement "iVar18 = piVar10[0xe];" (assignment_expression "iVar18 = piVar10[0xe]" (identifier "iVar18") (= "=") (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]"))) (; ";"))) (expression_statement "piVar10[0xe] = iVar18 + -1;" (assignment_expression "piVar10[0xe] = iVar18 + -1" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);" (call_expression "FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10)" (identifier "FUN_000c97d0") (argument_list "(piVar10,iVar21,iVar18 + -1,0x10)" (( "(") (identifier "piVar10") (, ",") (identifier "iVar21") (, ",") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1")) (, ",") (number_literal "0x10") () ")"))) (; ";")) (if_statement "if (bVar7 == 4) {\n            FUN_00073150(param_7);\n          }\n          else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" (if "if") (parenthesized_expression "(bVar7 == 4)" (( "(") (binary_expression "bVar7 == 4" (identifier "bVar7") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n            FUN_00073150(param_7);\n          }" ({ "{") (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" (identifier "FUN_00073150") (argument_list "(param_7)" (( "(") (identifier "param_7") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" (else "else") (compound_statement "{\n            iVar21 = piVar22[1];\n            if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }\n            if (bVar7 == 5) {\n              bVar7 = 2;\n            }\n            FUN_000744c0(iVar21,0,3);\n          }" ({ "{") (expression_statement "iVar21 = piVar22[1];" (assignment_expression "iVar21 = piVar22[1]" (identifier "iVar21") (= "=") (subscript_expression "piVar22[1]" (identifier "piVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar21 == 0) {\n              iVar21 = *piVar16;\n            }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar21 = *piVar16;\n            }" ({ "{") (expression_statement "iVar21 = *piVar16;" (assignment_expression "iVar21 = *piVar16" (identifier "iVar21") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (} "}"))) (if_statement "if (bVar7 == 5) {\n              bVar7 = 2;\n            }" (if "if") (parenthesized_expression "(bVar7 == 5)" (( "(") (binary_expression "bVar7 == 5" (identifier "bVar7") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n              bVar7 = 2;\n            }" ({ "{") (expression_statement "bVar7 = 2;" (assignment_expression "bVar7 = 2" (identifier "bVar7") (= "=") (number_literal "2")) (; ";")) (} "}"))) (expression_statement "FUN_000744c0(iVar21,0,3);" (call_expression "FUN_000744c0(iVar21,0,3)" (identifier "FUN_000744c0") (argument_list "(iVar21,0,3)" (( "(") (identifier "iVar21") (, ",") (number_literal "0") (, ",") (number_literal "3") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" (identifier "FUN_0006dec0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" (else "else") (compound_statement "{\n          do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);\n          local_3c[1] = unaff_EDI + -0xa9f97;\n          local_24 = param_9;\n          if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }\n        }" ({ "{") (do_statement "do {\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          } while (uVar13 < 0x18);" (do "do") (compound_statement "{\n            *(undefined4 *)((int)local_3c + uVar13) = 0;\n            uVar13 = uVar13 + 4;\n          }" ({ "{") (expression_statement "*(undefined4 *)((int)local_3c + uVar13) = 0;" (assignment_expression "*(undefined4 *)((int)local_3c + uVar13) = 0" (pointer_expression "*(undefined4 *)((int)local_3c + uVar13)" (* "*") (cast_expression "(undefined4 *)((int)local_3c + uVar13)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_3c + uVar13)" (( "(") (binary_expression "(int)local_3c + uVar13" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (+ "+") (identifier "uVar13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = uVar13 + 4;" (assignment_expression "uVar13 = uVar13 + 4" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 4" (identifier "uVar13") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 < 0x18)" (( "(") (binary_expression "uVar13 < 0x18" (identifier "uVar13") (< "<") (number_literal "0x18")) () ")")) (; ";")) (expression_statement "local_3c[1] = unaff_EDI + -0xa9f97;" (assignment_expression "local_3c[1] = unaff_EDI + -0xa9f97" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "unaff_EDI + -0xa9f97" (identifier "unaff_EDI") (+ "+") (number_literal "-0xa9f97"))) (; ";")) (expression_statement "local_24 = param_9;" (assignment_expression "local_24 = param_9" (identifier "local_24") (= "=") (identifier "param_9")) (; ";")) (if_statement "if (iVar21 == 0) {\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }\n          else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" (if "if") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }\n          }" ({ "{") (if_statement "if (param_5 == '\0') {\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }" (if "if") (parenthesized_expression "(param_5 == '\0')" (( "(") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              bVar8 = 0;\n              goto LAB_000f0235;\n            }" ({ "{") (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000f0235;" (goto "goto") (statement_identifier "LAB_000f0235") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" (else "else") (compound_statement "{\n            FUN_0005c830();\n            bVar8 = local_28;\n            if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }\n            if (bVar8 != 0) goto LAB_000f023c;\n          }" ({ "{") (expression_statement "FUN_0005c830();" (call_expression "FUN_0005c830()" (identifier "FUN_0005c830") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar8 = local_28;" (assignment_expression "bVar8 = local_28" (identifier "bVar8") (= "=") (identifier "local_28")) (; ";")) (if_statement "if (param_5 == '\0') {\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }" (if "if") (parenthesized_expression "(param_5 == '\0')" (( "(") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_000f0235:\n              bVar8 = bVar8 & 0xfd;\n            }" ({ "{") (labeled_statement "LAB_000f0235:\n              bVar8 = bVar8 & 0xfd;" (statement_identifier "LAB_000f0235") (: ":") (expression_statement "bVar8 = bVar8 & 0xfd;" (assignment_expression "bVar8 = bVar8 & 0xfd" (identifier "bVar8") (= "=") (binary_expression "bVar8 & 0xfd" (identifier "bVar8") (& "&") (number_literal "0xfd"))) (; ";"))) (} "}"))) (if_statement "if (bVar8 != 0) goto LAB_000f023c;" (if "if") (parenthesized_expression "(bVar8 != 0)" (( "(") (binary_expression "bVar8 != 0" (identifier "bVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000f023c;" (goto "goto") (statement_identifier "LAB_000f023c") (; ";"))) (} "}")))) (} "}")))) (expression_statement "local_ac = local_ac + 1;" (assignment_expression "local_ac = local_ac + 1" (identifier "local_ac") (= "=") (binary_expression "local_ac + 1" (identifier "local_ac") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar22 = piVar22 + 5;" (assignment_expression "piVar22 = piVar22 + 5" (identifier "piVar22") (= "=") (binary_expression "piVar22 + 5" (identifier "piVar22") (+ "+") (number_literal "5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_ac < *piVar15)" (( "(") (binary_expression "local_ac < *piVar15" (identifier "local_ac") (< "<") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) () ")")) (; ";")) (} "}"))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" (identifier "piVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "bVar17 = (bool)(param_5 != '\0' & bVar2);" (assignment_expression "bVar17 = (bool)(param_5 != '\0' & bVar2)" (identifier "bVar17") (= "=") (cast_expression "(bool)(param_5 != '\0' & bVar2)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(param_5 != '\0' & bVar2)" (( "(") (binary_expression "param_5 != '\0' & bVar2" (binary_expression "param_5 != '\0'" (identifier "param_5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (& "&") (identifier "bVar2")) () ")")))) (; ";")) (if_statement "if (param_10 == (int *)0x0) {\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }\n  else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" (if "if") (parenthesized_expression "(param_10 == (int *)0x0)" (( "(") (binary_expression "param_10 == (int *)0x0" (identifier "param_10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_88 = (undefined4 *)0x0;\n    local_58 = 0;\nLAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;\n    iVar21 = piVar10[0xe] + -1;\n    piVar10[0xe] = iVar21;\n    uVar13 = (uint)param_6;\n    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }\nLAB_000f05be:\n    FUN_0006dec0();\n    if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }\n    local_48 = FUN_00073150(0);\n    iVar21 = local_60 + -1;\n    if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }\n    iVar18 = unaff_EDI + 0xccb05;\n    if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }\n    *(int *)(iVar18 + 8) = piVar11[0x1a];\n    puVar12 = (undefined4 *)piVar16[2];\n    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;\n  }" ({ "{") (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" (identifier "local_88") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000f0322:\n    if (!bVar17) goto LAB_000f0dc0;" (statement_identifier "LAB_000f0322") (: ":") (if_statement "if (!bVar17) goto LAB_000f0dc0;" (if "if") (parenthesized_expression "(!bVar17)" (( "(") (unary_expression "!bVar17" (! "!") (identifier "bVar17")) () ")")) (goto_statement "goto LAB_000f0dc0;" (goto "goto") (statement_identifier "LAB_000f0dc0") (; ";")))) (expression_statement "iVar21 = piVar10[0xe] + -1;" (assignment_expression "iVar21 = piVar10[0xe] + -1" (identifier "iVar21") (= "=") (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar10[0xe] = iVar21;" (assignment_expression "piVar10[0xe] = iVar21" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "uVar13 = (uint)param_6;" (assignment_expression "uVar13 = (uint)param_6" (identifier "uVar13") (= "=") (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6"))) (; ";")) (if_statement "if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }\n    else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" (if "if") (parenthesized_expression "((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb))" (( "(") (binary_expression "(param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)" (parenthesized_expression "(param_6 == 0xb)" (( "(") (binary_expression "param_6 == 0xb" (identifier "param_6") (== "==") (number_literal "0xb")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)" (( "(") (comma_expression "uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb" (assignment_expression "uVar13 = (uint)*(byte *)(piVar16 + 0xc)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(byte *)(piVar16 + 0xc)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(piVar16 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16 + 0xc)" (( "(") (binary_expression "piVar16 + 0xc" (identifier "piVar16") (+ "+") (number_literal "0xc")) () ")"))))) (, ",") (binary_expression "uVar13 == 0xb" (identifier "uVar13") (== "==") (number_literal "0xb"))) () ")"))) () ")")) (compound_statement "{\n      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }\n      FUN_00086c60();\n      local_5c = 0;\n    }" ({ "{") (if_statement "if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }\n      else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" (if "if") (parenthesized_expression "((param_10 == (int *)0x0) || (param_10[4] != 0))" (( "(") (binary_expression "(param_10 == (int *)0x0) || (param_10[4] != 0)" (parenthesized_expression "(param_10 == (int *)0x0)" (( "(") (binary_expression "param_10 == (int *)0x0" (identifier "param_10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(param_10[4] != 0)" (( "(") (binary_expression "param_10[4] != 0" (subscript_expression "param_10[4]" (identifier "param_10") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        uVar13 = 2;\nLAB_000f0547:\n        local_60 = 0;\n        if (param_4 != 0) goto LAB_000f117a;\n      }" ({ "{") (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" (identifier "uVar13") (= "=") (number_literal "2")) (; ";")) (labeled_statement "LAB_000f0547:\n        local_60 = 0;" (statement_identifier "LAB_000f0547") (: ":") (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (param_4 != 0) goto LAB_000f117a;" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000f117a;" (goto "goto") (statement_identifier "LAB_000f117a") (; ";"))) (} "}")) (else_clause "else {\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" (else "else") (compound_statement "{\nLAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }\nLAB_000f117a:\n        FUN_00072f80(iVar21,param_4);\n        if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }\n      }" ({ "{") (labeled_statement "LAB_000f11cd:\n        if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" (statement_identifier "LAB_000f11cd") (: ":") (if_statement "if (param_10[2] == 0) {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }\n        else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" (if "if") (parenthesized_expression "(param_10[2] == 0)" (( "(") (binary_expression "param_10[2] == 0" (subscript_expression "param_10[2]" (identifier "param_10") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }\n          local_60 = 0;\n          uVar13 = 4;\n        }" ({ "{") (if_statement "if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            goto LAB_000f0870;\n          }" ({ "{") (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" (identifier "FUN_0007e150") (argument_list "(piVar11,unaff_EDI + 0x6ddab)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddab" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddab")) () ")"))) (; ";")) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" (identifier "FUN_00072f80") (argument_list "(iVar21,param_3)" (( "(") (identifier "iVar21") (, ",") (identifier "param_3") () ")"))) (; ";")) (goto_statement "goto LAB_000f0870;" (goto "goto") (statement_identifier "LAB_000f0870") (; ";")) (} "}"))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = 4;" (assignment_expression "uVar13 = 4" (identifier "uVar13") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" (else "else") (compound_statement "{\n          if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }\n          uVar13 = 6;\n          local_60 = 0;\n        }" ({ "{") (if_statement "if (param_4 == 0) {\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n            FUN_00072f80(iVar21,param_3);\n            FUN_000f3260(0,param_1);\nLAB_000f0870:\n            local_60 = 0;\n            FUN_00073150(param_7);\n            local_5c = 0;\n            goto LAB_000f05be;\n          }" ({ "{") (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" (identifier "FUN_0007e150") (argument_list "(piVar11,unaff_EDI + 0x6ddab)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddab" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddab")) () ")"))) (; ";")) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" (identifier "FUN_00072f80") (argument_list "(iVar21,param_3)" (( "(") (identifier "iVar21") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "FUN_000f3260(0,param_1);" (call_expression "FUN_000f3260(0,param_1)" (identifier "FUN_000f3260") (argument_list "(0,param_1)" (( "(") (number_literal "0") (, ",") (identifier "param_1") () ")"))) (; ";")) (labeled_statement "LAB_000f0870:\n            local_60 = 0;" (statement_identifier "LAB_000f0870") (: ":") (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";"))) (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" (identifier "FUN_00073150") (argument_list "(param_7)" (( "(") (identifier "param_7") () ")"))) (; ";")) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000f05be;" (goto "goto") (statement_identifier "LAB_000f05be") (; ";")) (} "}"))) (expression_statement "uVar13 = 6;" (assignment_expression "uVar13 = 6" (identifier "uVar13") (= "=") (number_literal "6")) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (} "}"))))) (labeled_statement "LAB_000f117a:\n        FUN_00072f80(iVar21,param_4);" (statement_identifier "LAB_000f117a") (: ":") (expression_statement "FUN_00072f80(iVar21,param_4);" (call_expression "FUN_00072f80(iVar21,param_4)" (identifier "FUN_00072f80") (argument_list "(iVar21,param_4)" (( "(") (identifier "iVar21") (, ",") (identifier "param_4") () ")"))) (; ";"))) (if_statement "if (0 < piVar11[0x1a]) {\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }" (if "if") (parenthesized_expression "(0 < piVar11[0x1a])" (( "(") (binary_expression "0 < piVar11[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n        }" ({ "{") (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (* "*") (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x18"))) (+ "+") (number_literal "-0x16")) () ")")))) (= "=") (number_literal "0x90")) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" (identifier "FUN_0007e150") (argument_list "(piVar11,unaff_EDI + 0x6ddab)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddab" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddab")) () ")"))) (; ";")) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" (identifier "FUN_00072f80") (argument_list "(iVar21,param_3)" (( "(") (identifier "iVar21") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if (uVar13 < 7) {\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }" (if "if") (parenthesized_expression "(uVar13 < 7)" (( "(") (binary_expression "uVar13 < 7" (identifier "uVar13") (< "<") (number_literal "7")) () ")")) (compound_statement "{\n                    \n                    \n        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();\n        return;\n      }" ({ "{") (expression_statement "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();" (call_expression "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))" (( "(") (pointer_expression "*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" (* "*") (cast_expression "(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI)" (( "(") (binary_expression "&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI" (binary_expression "&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" (pointer_expression "&UNK_000caf71" (& "&") (identifier "UNK_000caf71")) (+ "+") (pointer_expression "*(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x71541 + uVar13 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x71541 + uVar13 * 4)" (( "(") (binary_expression "unaff_EDI + 0x71541 + uVar13 * 4" (binary_expression "unaff_EDI + 0x71541" (identifier "unaff_EDI") (+ "+") (number_literal "0x71541")) (+ "+") (binary_expression "uVar13 * 4" (identifier "uVar13") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (identifier "unaff_EDI")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00086c60();" (call_expression "FUN_00086c60()" (identifier "FUN_00086c60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" (else "else") (compound_statement "{\n      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;\n      if (uVar13 != 5) goto LAB_000f0547;\n      local_60 = 0;\n      if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }\n      if (param_4 != 0) goto LAB_000f117a;\n      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);\n      FUN_00072f80(iVar21,param_3);\n      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }\n    }" ({ "{") (if_statement "if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;" (if "if") (parenthesized_expression "((param_10 != (int *)0x0) && (param_10[4] == 0))" (( "(") (binary_expression "(param_10 != (int *)0x0) && (param_10[4] == 0)" (parenthesized_expression "(param_10 != (int *)0x0)" (( "(") (binary_expression "param_10 != (int *)0x0" (identifier "param_10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(param_10[4] == 0)" (( "(") (binary_expression "param_10[4] == 0" (subscript_expression "param_10[4]" (identifier "param_10") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_000f11cd;" (goto "goto") (statement_identifier "LAB_000f11cd") (; ";"))) (if_statement "if (uVar13 != 5) goto LAB_000f0547;" (if "if") (parenthesized_expression "(uVar13 != 5)" (( "(") (binary_expression "uVar13 != 5" (identifier "uVar13") (!= "!=") (number_literal "5")) () ")")) (goto_statement "goto LAB_000f0547;" (goto "goto") (statement_identifier "LAB_000f0547") (; ";"))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_6 != 5) && (piVar16[2] != 0)) {\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }" (if "if") (parenthesized_expression "((param_6 != 5) && (piVar16[2] != 0))" (( "(") (binary_expression "(param_6 != 5) && (piVar16[2] != 0)" (parenthesized_expression "(param_6 != 5)" (( "(") (binary_expression "param_6 != 5" (identifier "param_6") (!= "!=") (number_literal "5")) () ")")) (&& "&&") (parenthesized_expression "(piVar16[2] != 0)" (( "(") (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        local_60 = FUN_00073150(0);\n        local_60 = local_60 + 1;\n        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);\n      }" ({ "{") (expression_statement "local_60 = FUN_00073150(0);" (assignment_expression "local_60 = FUN_00073150(0)" (identifier "local_60") (= "=") (call_expression "FUN_00073150(0)" (identifier "FUN_00073150") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);" (call_expression "FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI)" (identifier "FUN_0007e240") (argument_list "(piVar11,&UNK_0006dd8e + unaff_EDI)" (( "(") (identifier "piVar11") (, ",") (binary_expression "&UNK_0006dd8e + unaff_EDI" (pointer_expression "&UNK_0006dd8e" (& "&") (identifier "UNK_0006dd8e")) (+ "+") (identifier "unaff_EDI")) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 != 0) goto LAB_000f117a;" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000f117a;" (goto "goto") (statement_identifier "LAB_000f117a") (; ";"))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6ddab)" (identifier "FUN_0007e150") (argument_list "(piVar11,unaff_EDI + 0x6ddab)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddab" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddab")) () ")"))) (; ";")) (expression_statement "FUN_00072f80(iVar21,param_3);" (call_expression "FUN_00072f80(iVar21,param_3)" (identifier "FUN_00072f80") (argument_list "(iVar21,param_3)" (( "(") (identifier "iVar21") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }\n      else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" (if "if") (parenthesized_expression "((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0))" (( "(") (binary_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&\n         (iVar21 = FUN_0004ed00(0), iVar21 == 0)" (parenthesized_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0))" (( "(") (binary_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)" (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x1d)" (* "*") (cast_expression "(byte *)(iVar4 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1d)" (( "(") (binary_expression "iVar4 + 0x1d" (identifier "iVar4") (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar21 = FUN_00049a60(0,0), iVar21 == 0)" (( "(") (comma_expression "iVar21 = FUN_00049a60(0,0), iVar21 == 0" (assignment_expression "iVar21 = FUN_00049a60(0,0)" (identifier "iVar21") (= "=") (call_expression "FUN_00049a60(0,0)" (identifier "FUN_00049a60") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar21 = FUN_0004ed00(0), iVar21 == 0)" (( "(") (comma_expression "iVar21 = FUN_0004ed00(0), iVar21 == 0" (assignment_expression "iVar21 = FUN_0004ed00(0)" (identifier "iVar21") (= "=") (call_expression "FUN_0004ed00(0)" (identifier "FUN_0004ed00") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        FUN_00073150(0x40);\n        FUN_000626c0();\n        local_5c = 1;\n        if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }\n      }" ({ "{") (expression_statement "FUN_00073150(0x40);" (call_expression "FUN_00073150(0x40)" (identifier "FUN_00073150") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "FUN_000626c0();" (call_expression "FUN_000626c0()" (identifier "FUN_000626c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" (identifier "local_5c") (= "=") (number_literal "1")) (; ";")) (if_statement "if (piVar16[2] != 0) {\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }" (if "if") (parenthesized_expression "(piVar16[2] != 0)" (( "(") (binary_expression "piVar16[2] != 0" (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar15 = (int *)piVar10[0x1d];\n          if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }\n          *(undefined1 *)(piVar15 + 5) = 1;\n          FUN_000d1920(param_2,0,0xffffffff);\n          local_5c = 1;\n        }" ({ "{") (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n            piVar15 = piVar10;\n          }" (if "if") (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            piVar15 = piVar10;\n          }" ({ "{") (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" (identifier "piVar15") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar15 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar15 + 5)" (( "(") (binary_expression "piVar15 + 5" (identifier "piVar15") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_000d1920(param_2,0,0xffffffff);" (call_expression "FUN_000d1920(param_2,0,0xffffffff)" (identifier "FUN_000d1920") (argument_list "(param_2,0,0xffffffff)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" (identifier "local_5c") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" (else "else") (compound_statement "{\n        piVar15 = (int *)piVar10[0x1d];\n        if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }\n        *(undefined1 *)(piVar15 + 5) = 1;\n        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);\n        local_5c = 1;\n      }" ({ "{") (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n          piVar15 = piVar10;\n        }" (if "if") (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar15 = piVar10;\n        }" ({ "{") (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" (identifier "piVar15") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar15 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar15 + 5)" (( "(") (binary_expression "piVar15 + 5" (identifier "piVar15") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);" (call_expression "FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff)" (identifier "FUN_000efa90") (argument_list "(param_1,param_2,param_3,1,0,5,1,0xffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "5") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" (identifier "local_5c") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_000f05be:\n    FUN_0006dec0();" (statement_identifier "LAB_000f05be") (: ":") (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" (identifier "FUN_0006dec0") (argument_list "()" (( "(") () ")"))) (; ";"))) (if_statement "if (local_60 == 0) {\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }" (if "if") (parenthesized_expression "(local_60 == 0)" (( "(") (binary_expression "local_60 == 0" (identifier "local_60") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar12 = (undefined4 *)piVar16[2];\n      goto joined_r0x000f05e4;\n    }" ({ "{") (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)piVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (goto_statement "goto joined_r0x000f05e4;" (goto "goto") (statement_identifier "joined_r0x000f05e4") (; ";")) (} "}"))) (expression_statement "local_48 = FUN_00073150(0);" (assignment_expression "local_48 = FUN_00073150(0)" (identifier "local_48") (= "=") (call_expression "FUN_00073150(0)" (identifier "FUN_00073150") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar21 = local_60 + -1;" (assignment_expression "iVar21 = local_60 + -1" (identifier "iVar21") (= "=") (binary_expression "local_60 + -1" (identifier "local_60") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (local_60 + -1 < 0) {\n      iVar21 = piVar11[0x1a] + -1;\n    }" (if "if") (parenthesized_expression "(local_60 + -1 < 0)" (( "(") (binary_expression "local_60 + -1 < 0" (binary_expression "local_60 + -1" (identifier "local_60") (+ "+") (number_literal "-1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar21 = piVar11[0x1a] + -1;\n    }" ({ "{") (expression_statement "iVar21 = piVar11[0x1a] + -1;" (assignment_expression "iVar21 = piVar11[0x1a] + -1" (identifier "iVar21") (= "=") (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "iVar18 = unaff_EDI + 0xccb05;" (assignment_expression "iVar18 = unaff_EDI + 0xccb05" (identifier "iVar18") (= "=") (binary_expression "unaff_EDI + 0xccb05" (identifier "unaff_EDI") (+ "+") (number_literal "0xccb05"))) (; ";")) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar11 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x4d)" (( "(") (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar18 = piVar11[0x19] + iVar21 * 0x18;\n    }" ({ "{") (expression_statement "iVar18 = piVar11[0x19] + iVar21 * 0x18;" (assignment_expression "iVar18 = piVar11[0x19] + iVar21 * 0x18" (identifier "iVar18") (= "=") (binary_expression "piVar11[0x19] + iVar21 * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar21 * 0x18" (identifier "iVar21") (* "*") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar18 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar18 + 8) = piVar11[0x1a]" (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")) () ")")))) (= "=") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)piVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;" (if "if") (parenthesized_expression "(puVar12 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar12 != (undefined4 *)0x0" (identifier "puVar12") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000f05ea;" (goto "goto") (statement_identifier "LAB_000f05ea") (; ";"))) (} "}")) (else_clause "else {\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" (else "else") (compound_statement "{\n    if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }\n    if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }\n    local_6c = (int *)0x0;\n    local_58 = 0;\n    local_7b = 4;\n    local_88 = (undefined4 *)0x0;\nLAB_000f0dc0:\n    local_60 = 0;\n    puVar12 = (undefined4 *)piVar16[2];\n    local_5c = 0;\njoined_r0x000f05e4:\n    local_48 = 0;\n    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;\nLAB_000f05ea:\n    bVar17 = false;\n    local_54 = 0;\n    local_9c = 0;\n    do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);\nLAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;\n  }" ({ "{") (if_statement "if (*param_10 != 0) {\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }" (if "if") (parenthesized_expression "(*param_10 != 0)" (( "(") (binary_expression "*param_10 != 0" (pointer_expression "*param_10" (* "*") (identifier "param_10")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_88 = (undefined4 *)param_10[4];\n      local_58 = 0;\n      if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }\n      goto LAB_000f0322;\n    }" ({ "{") (expression_statement "local_88 = (undefined4 *)param_10[4];" (assignment_expression "local_88 = (undefined4 *)param_10[4]" (identifier "local_88") (= "=") (cast_expression "(undefined4 *)param_10[4]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_10[4]" (identifier "param_10") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_88 != (undefined4 *)0x0) {\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }" (if "if") (parenthesized_expression "(local_88 != (undefined4 *)0x0)" (( "(") (binary_expression "local_88 != (undefined4 *)0x0" (identifier "local_88") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_58 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);\n      }" ({ "{") (expression_statement "local_58 = FUN_00073150(0);" (assignment_expression "local_58 = FUN_00073150(0)" (identifier "local_58") (= "=") (call_expression "FUN_00073150(0)" (identifier "FUN_00073150") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6dd71)" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6dd71)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6dd71" (identifier "unaff_EDI") (+ "+") (number_literal "0x6dd71")) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000f0322;" (goto "goto") (statement_identifier "LAB_000f0322") (; ";")) (} "}"))) (if_statement "if (bVar17) {\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (compound_statement "{\n      local_7b = 4;\n      uVar13 = 4;\n      local_6c = (int *)0x0;\n      local_58 = 0;\n      iVar21 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar21;\n      local_88 = (undefined4 *)0x0;\n      goto LAB_000f0547;\n    }" ({ "{") (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" (identifier "local_7b") (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar13 = 4;" (assignment_expression "uVar13 = 4" (identifier "uVar13") (= "=") (number_literal "4")) (; ";")) (expression_statement "local_6c = (int *)0x0;" (assignment_expression "local_6c = (int *)0x0" (identifier "local_6c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar21 = piVar10[0xe] + -1;" (assignment_expression "iVar21 = piVar10[0xe] + -1" (identifier "iVar21") (= "=") (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar10[0xe] = iVar21;" (assignment_expression "piVar10[0xe] = iVar21" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" (identifier "local_88") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_000f0547;" (goto "goto") (statement_identifier "LAB_000f0547") (; ";")) (} "}"))) (expression_statement "local_6c = (int *)0x0;" (assignment_expression "local_6c = (int *)0x0" (identifier "local_6c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7b = 4;" (assignment_expression "local_7b = 4" (identifier "local_7b") (= "=") (number_literal "4")) (; ";")) (expression_statement "local_88 = (undefined4 *)0x0;" (assignment_expression "local_88 = (undefined4 *)0x0" (identifier "local_88") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000f0dc0:\n    local_60 = 0;" (statement_identifier "LAB_000f0dc0") (: ":") (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";"))) (expression_statement "puVar12 = (undefined4 *)piVar16[2];" (assignment_expression "puVar12 = (undefined4 *)piVar16[2]" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)piVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar16[2]" (identifier "piVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (labeled_statement "joined_r0x000f05e4:\n    local_48 = 0;" (statement_identifier "joined_r0x000f05e4") (: ":") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;" (if "if") (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar12 == (undefined4 *)0x0" (identifier "puVar12") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000f0b10;" (goto "goto") (statement_identifier "LAB_000f0b10") (; ";"))) (labeled_statement "LAB_000f05ea:\n    bVar17 = false;" (statement_identifier "LAB_000f05ea") (: ":") (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";"))) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    } while (puVar12 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }\n      if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }\n      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);\n      if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }\n      iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      iVar21 = iVar18 + 1;\n      if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }\n      FUN_00072f80(uVar13,iVar18);\n      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);\n      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }\n      if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }\n      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));\n      local_b0 = iVar21;\n      if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }\n      if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }\nLAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }\n      if (local_b0 == iVar21) goto LAB_000f0608;\n      if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }\n      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;\n      piVar10[7] = local_78;\n      local_9c = local_9c + 1;\n      piVar10[8] = local_b0;\n      puVar12 = (undefined4 *)puVar12[5];\n    }" ({ "{") (while_statement "while (*(int *)(extraout_ECX + local_9c * 4) == 0) {\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }" (while "while") (parenthesized_expression "(*(int *)(extraout_ECX + local_9c * 4) == 0)" (( "(") (binary_expression "*(int *)(extraout_ECX + local_9c * 4) == 0" (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" (* "*") (cast_expression "(int *)(extraout_ECX + local_9c * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + local_9c * 4)" (( "(") (binary_expression "extraout_ECX + local_9c * 4" (identifier "extraout_ECX") (+ "+") (binary_expression "local_9c * 4" (identifier "local_9c") (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];\n        local_9c = local_9c + 1;\n        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;\n      }" ({ "{") (labeled_statement "LAB_000f0608:\n        puVar12 = (undefined4 *)puVar12[5];" (statement_identifier "LAB_000f0608") (: ":") (expression_statement "puVar12 = (undefined4 *)puVar12[5];" (assignment_expression "puVar12 = (undefined4 *)puVar12[5]" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)puVar12[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar12[5]" (identifier "puVar12") ([ "[") (number_literal "5") (] "]")))) (; ";"))) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" (identifier "local_9c") (= "=") (binary_expression "local_9c + 1" (identifier "local_9c") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;" (if "if") (parenthesized_expression "(puVar12 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar12 == (undefined4 *)0x0" (identifier "puVar12") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000f0ab0;" (goto "goto") (statement_identifier "LAB_000f0ab0") (; ";"))) (} "}"))) (if_statement "if (puVar12 == local_88) {\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }\n      else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" (if "if") (parenthesized_expression "(puVar12 == local_88)" (( "(") (binary_expression "puVar12 == local_88" (identifier "puVar12") (== "==") (identifier "local_88")) () ")")) (compound_statement "{\n        local_84 = local_58 + 1;\n        local_54 = FUN_00073150(0);\n        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);\n        iVar21 = unaff_EDI + 0xccb05;\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_58) {\n          iVar18 = local_58;\n        }\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar21 + 8) = piVar11[0x1a];\n        if (!bVar17) goto LAB_000f0d78;\n      }" ({ "{") (expression_statement "local_84 = local_58 + 1;" (assignment_expression "local_84 = local_58 + 1" (identifier "local_84") (= "=") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_54 = FUN_00073150(0);" (assignment_expression "local_54 = FUN_00073150(0)" (identifier "local_54") (= "=") (call_expression "FUN_00073150(0)" (identifier "FUN_00073150") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6)" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6ddc6)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddc6" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddc6")) () ")"))) (; ";")) (expression_statement "iVar21 = unaff_EDI + 0xccb05;" (assignment_expression "iVar21 = unaff_EDI + 0xccb05" (identifier "iVar21") (= "=") (binary_expression "unaff_EDI + 0xccb05" (identifier "unaff_EDI") (+ "+") (number_literal "0xccb05"))) (; ";")) (expression_statement "iVar18 = piVar11[0x1a] + -1;" (assignment_expression "iVar18 = piVar11[0x1a] + -1" (identifier "iVar18") (= "=") (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < local_58) {\n          iVar18 = local_58;\n        }" (if "if") (parenthesized_expression "(-1 < local_58)" (( "(") (binary_expression "-1 < local_58" (number_literal "-1") (< "<") (identifier "local_58")) () ")")) (compound_statement "{\n          iVar18 = local_58;\n        }" ({ "{") (expression_statement "iVar18 = local_58;" (assignment_expression "iVar18 = local_58" (identifier "iVar18") (= "=") (identifier "local_58")) (; ";")) (} "}"))) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar11 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x4d)" (( "(") (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar21 = piVar11[0x19] + iVar18 * 0x18;\n        }" ({ "{") (expression_statement "iVar21 = piVar11[0x19] + iVar18 * 0x18;" (assignment_expression "iVar21 = piVar11[0x19] + iVar18 * 0x18" (identifier "iVar21") (= "=") (binary_expression "piVar11[0x19] + iVar18 * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar18 * 0x18" (identifier "iVar18") (* "*") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar21 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar21 + 8) = piVar11[0x1a]" (pointer_expression "*(int *)(iVar21 + 8)" (* "*") (cast_expression "(int *)(iVar21 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 8)" (( "(") (binary_expression "iVar21 + 8" (identifier "iVar21") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (!bVar17) goto LAB_000f0d78;" (if "if") (parenthesized_expression "(!bVar17)" (( "(") (unary_expression "!bVar17" (! "!") (identifier "bVar17")) () ")")) (goto_statement "goto LAB_000f0d78;" (goto "goto") (statement_identifier "LAB_000f0d78") (; ";"))) (} "}")) (else_clause "else {\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" (else "else") (compound_statement "{\n        local_84 = piVar10[0xe] + -1;\n        piVar10[0xe] = local_84;\n        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }\n      }" ({ "{") (expression_statement "local_84 = piVar10[0xe] + -1;" (assignment_expression "local_84 = piVar10[0xe] + -1" (identifier "local_84") (= "=") (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar10[0xe] = local_84;" (assignment_expression "piVar10[0xe] = local_84" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "local_84")) (; ";")) (if_statement "if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }" (if "if") (parenthesized_expression "((!bVar17) && (local_88 == (undefined4 *)0x0))" (( "(") (binary_expression "(!bVar17) && (local_88 == (undefined4 *)0x0)" (parenthesized_expression "(!bVar17)" (( "(") (unary_expression "!bVar17" (! "!") (identifier "bVar17")) () ")")) (&& "&&") (parenthesized_expression "(local_88 == (undefined4 *)0x0)" (( "(") (binary_expression "local_88 == (undefined4 *)0x0" (identifier "local_88") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\nLAB_000f0d78:\n          FUN_00073230();\n          bVar17 = true;\n        }" ({ "{") (labeled_statement "LAB_000f0d78:\n          FUN_00073230();" (statement_identifier "LAB_000f0d78") (: ":") (expression_statement "FUN_00073230();" (call_expression "FUN_00073230()" (identifier "FUN_00073230") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" (identifier "bVar17") (= "=") (true "true")) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);" (call_expression "FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12)" (identifier "FUN_0007e150") (argument_list "(piVar11,unaff_EDI + 0x6dddd,*puVar12)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6dddd" (identifier "unaff_EDI") (+ "+") (number_literal "0x6dddd")) (, ",") (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) () ")"))) (; ";")) (if_statement "if (puVar12[9] != 0) {\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }" (if "if") (parenthesized_expression "(puVar12[9] != 0)" (( "(") (binary_expression "puVar12[9] != 0" (subscript_expression "puVar12[9]" (identifier "puVar12") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));\n        iVar21 = *piVar10;\n        piVar10[0xd] = ~param_3;\n        if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }\n        piVar10[0xd] = 0;\n      }" ({ "{") (expression_statement "FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));" (call_expression "FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4))" (identifier "FUN_00073150") (argument_list "(*(undefined4 *)(extraout_ECX + local_9c * 4))" (( "(") (pointer_expression "*(undefined4 *)(extraout_ECX + local_9c * 4)" (* "*") (cast_expression "(undefined4 *)(extraout_ECX + local_9c * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + local_9c * 4)" (( "(") (binary_expression "extraout_ECX + local_9c * 4" (identifier "extraout_ECX") (+ "+") (binary_expression "local_9c * 4" (identifier "local_9c") (* "*") (number_literal "4"))) () ")")))) () ")"))) (; ";")) (expression_statement "iVar21 = *piVar10;" (assignment_expression "iVar21 = *piVar10" (identifier "iVar21") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" (identifier "piVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (unary_expression "~param_3" (~ "~") (identifier "param_3"))) (; ";")) (if_statement "if (puVar12[9] == 0) {\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }\n        else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" (if "if") (parenthesized_expression "(puVar12[9] == 0)" (( "(") (binary_expression "puVar12[9] == 0" (subscript_expression "puVar12[9]" (identifier "puVar12") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }\n        }" ({ "{") (if_statement "if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar21 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar21 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar21 + 0x4d)" (* "*") (cast_expression "(char *)(iVar21 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x4d)" (( "(") (binary_expression "iVar21 + 0x4d" (identifier "iVar21") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_000c9bf0(piVar10,0,local_84,0x10);\n          }" ({ "{") (expression_statement "FUN_000c9bf0(piVar10,0,local_84,0x10);" (call_expression "FUN_000c9bf0(piVar10,0,local_84,0x10)" (identifier "FUN_000c9bf0") (argument_list "(piVar10,0,local_84,0x10)" (( "(") (identifier "piVar10") (, ",") (number_literal "0") (, ",") (identifier "local_84") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" (else "else") (compound_statement "{\n          iVar18 = FUN_0005e9a0();\n          if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }\n          if (iVar18 != 0) {\n            FUN_00063d60();\n          }\n        }" ({ "{") (expression_statement "iVar18 = FUN_0005e9a0();" (assignment_expression "iVar18 = FUN_0005e9a0()" (identifier "iVar18") (= "=") (call_expression "FUN_0005e9a0()" (identifier "FUN_0005e9a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(char *)(iVar21 + 0x4d) == '\0') {\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar21 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar21 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar21 + 0x4d)" (* "*") (cast_expression "(char *)(iVar21 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x4d)" (( "(") (binary_expression "iVar21 + 0x4d" (identifier "iVar21") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);\n          }" ({ "{") (expression_statement "FUN_000c9bf0(piVar10,iVar18,local_84,0x10);" (call_expression "FUN_000c9bf0(piVar10,iVar18,local_84,0x10)" (identifier "FUN_000c9bf0") (argument_list "(piVar10,iVar18,local_84,0x10)" (( "(") (identifier "piVar10") (, ",") (identifier "iVar18") (, ",") (identifier "local_84") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar18 != 0) {\n            FUN_00063d60();\n          }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00063d60();\n          }" ({ "{") (expression_statement "FUN_00063d60();" (call_expression "FUN_00063d60()" (identifier "FUN_00063d60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" (identifier "piVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar18 = *(int *)(extraout_ECX + local_9c * 4)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" (* "*") (cast_expression "(int *)(extraout_ECX + local_9c * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + local_9c * 4)" (( "(") (binary_expression "extraout_ECX + local_9c * 4" (identifier "extraout_ECX") (+ "+") (binary_expression "local_9c * 4" (identifier "local_9c") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar21 = iVar18 + 1;" (assignment_expression "iVar21 = iVar18 + 1" (identifier "iVar21") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(short *)(puVar12 + 0xd) == 0) {\n        uVar13 = 0;\n      }\n      else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" (if "if") (parenthesized_expression "(*(short *)(puVar12 + 0xd) == 0)" (( "(") (binary_expression "*(short *)(puVar12 + 0xd) == 0" (pointer_expression "*(short *)(puVar12 + 0xd)" (* "*") (cast_expression "(short *)(puVar12 + 0xd)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0xd)" (( "(") (binary_expression "puVar12 + 0xd" (identifier "puVar12") (+ "+") (number_literal "0xd")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar13 = 0;\n      }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" (else "else") (compound_statement "{\n        iVar18 = 0;\n        do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);\nLAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);\n      }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        } while (iVar19 < (int)uVar13);" (do "do") (compound_statement "{\n          while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }\n          iVar19 = *piVar10;\n          piVar10[0xd] = ~param_3;\n          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }\n          piVar10[0xd] = 0;\n          iVar19 = iVar18 + 1;\n          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);\n          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n          iVar18 = iVar19;\n        }" ({ "{") (while_statement "while( true ) {\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);\n            iVar19 = (int)sVar3;\n            if (iVar19 == -2) break;\n            uVar13 = param_3;\n            if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }\n            iVar20 = unaff_EDI + 0x6cca1;\n            if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }\n            iVar18 = iVar18 + 1;\n            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);\n            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);\n            if ((int)uVar13 <= iVar18) goto LAB_000f0926;\n          }" ({ "{") (expression_statement "sVar3 = *(short *)(puVar12[1] + iVar18 * 2);" (assignment_expression "sVar3 = *(short *)(puVar12[1] + iVar18 * 2)" (identifier "sVar3") (= "=") (pointer_expression "*(short *)(puVar12[1] + iVar18 * 2)" (* "*") (cast_expression "(short *)(puVar12[1] + iVar18 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12[1] + iVar18 * 2)" (( "(") (binary_expression "puVar12[1] + iVar18 * 2" (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar18 * 2" (identifier "iVar18") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "iVar19 = (int)sVar3;" (assignment_expression "iVar19 = (int)sVar3" (identifier "iVar19") (= "=") (cast_expression "(int)sVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar3"))) (; ";")) (if_statement "if (iVar19 == -2) break;" (if "if") (parenthesized_expression "(iVar19 == -2)" (( "(") (binary_expression "iVar19 == -2" (identifier "iVar19") (== "==") (number_literal "-2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar13 = param_3;" (assignment_expression "uVar13 = param_3" (identifier "uVar13") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar19 == -1) {\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }\n            else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" (if "if") (parenthesized_expression "(iVar19 == -1)" (( "(") (binary_expression "iVar19 == -1" (identifier "iVar19") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              cVar9 = 'P';\n              iVar20 = piVar11[0x1a];\n              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;\nLAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);\n            }" ({ "{") (expression_statement "cVar9 = 'P';" (assignment_expression "cVar9 = 'P'" (identifier "cVar9") (= "=") (char_literal "'P'" (' "'") (character "P") (' "'"))) (; ";")) (expression_statement "iVar20 = piVar11[0x1a];" (assignment_expression "iVar20 = piVar11[0x1a]" (identifier "iVar20") (= "=") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;" (if "if") (parenthesized_expression "(iVar20 < piVar11[0x1b])" (( "(") (binary_expression "iVar20 < piVar11[0x1b]" (identifier "iVar20") (< "<") (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]"))) () ")")) (goto_statement "goto LAB_000f0756;" (goto "goto") (statement_identifier "LAB_000f0756") (; ";"))) (labeled_statement "LAB_000f080d:\n              FUN_00072e30(iVar21 + iVar18,0);" (statement_identifier "LAB_000f080d") (: ":") (expression_statement "FUN_00072e30(iVar21 + iVar18,0);" (call_expression "FUN_00072e30(iVar21 + iVar18,0)" (identifier "FUN_00072e30") (argument_list "(iVar21 + iVar18,0)" (( "(") (binary_expression "iVar21 + iVar18" (identifier "iVar21") (+ "+") (identifier "iVar18")) (, ",") (number_literal "0") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" (else "else") (compound_statement "{\n              if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }\n              iVar20 = piVar11[0x1a];\n              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;\n              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;\nLAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;\n              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);\n              *pcVar1 = cVar9;\n              pcVar1[2] = '\0';\n              pcVar1[3] = '\0';\n              *(uint *)(pcVar1 + 4) = uVar13;\n              *(int *)(pcVar1 + 8) = iVar21 + iVar18;\n              pcVar1[0xc] = '\0';\n              pcVar1[0xd] = '\0';\n              pcVar1[0xe] = '\0';\n              pcVar1[0xf] = '\0';\n              pcVar1[0x10] = '\0';\n              pcVar1[0x11] = '\0';\n              pcVar1[0x12] = '\0';\n              pcVar1[0x13] = '\0';\n              pcVar1[1] = '\0';\n              pcVar1[0x14] = '\0';\n              pcVar1[0x15] = '\0';\n              pcVar1[0x16] = '\0';\n              pcVar1[0x17] = '\0';\n            }" ({ "{") (if_statement "if (sVar3 != (short)piVar16[10]) {\n                uVar13 = param_3 + 1 + iVar19;\n              }" (if "if") (parenthesized_expression "(sVar3 != (short)piVar16[10])" (( "(") (binary_expression "sVar3 != (short)piVar16[10]" (identifier "sVar3") (!= "!=") (cast_expression "(short)piVar16[10]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "piVar16[10]" (identifier "piVar16") ([ "[") (number_literal "10") (] "]")))) () ")")) (compound_statement "{\n                uVar13 = param_3 + 1 + iVar19;\n              }" ({ "{") (expression_statement "uVar13 = param_3 + 1 + iVar19;" (assignment_expression "uVar13 = param_3 + 1 + iVar19" (identifier "uVar13") (= "=") (binary_expression "param_3 + 1 + iVar19" (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar19"))) (; ";")) (} "}"))) (expression_statement "iVar20 = piVar11[0x1a];" (assignment_expression "iVar20 = piVar11[0x1a]" (identifier "iVar20") (= "=") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "cVar9 = ~(byte)(sVar3 >> 7) + 0x50;" (assignment_expression "cVar9 = ~(byte)(sVar3 >> 7) + 0x50" (identifier "cVar9") (= "=") (binary_expression "~(byte)(sVar3 >> 7) + 0x50" (unary_expression "~(byte)(sVar3 >> 7)" (~ "~") (call_expression "(byte)(sVar3 >> 7)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(sVar3 >> 7)" (( "(") (binary_expression "sVar3 >> 7" (identifier "sVar3") (>> ">>") (number_literal "7")) () ")")))) (+ "+") (number_literal "0x50"))) (; ";")) (if_statement "if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;" (if "if") (parenthesized_expression "(piVar11[0x1b] <= iVar20)" (( "(") (binary_expression "piVar11[0x1b] <= iVar20" (subscript_expression "piVar11[0x1b]" (identifier "piVar11") ([ "[") (number_literal "0x1b") (] "]")) (<= "<=") (identifier "iVar20")) () ")")) (goto_statement "goto LAB_000f080d;" (goto "goto") (statement_identifier "LAB_000f080d") (; ";"))) (labeled_statement "LAB_000f0756:\n              piVar11[0x1a] = iVar20 + 1;" (statement_identifier "LAB_000f0756") (: ":") (expression_statement "piVar11[0x1a] = iVar20 + 1;" (assignment_expression "piVar11[0x1a] = iVar20 + 1" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);" (assignment_expression "pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18)" (identifier "pcVar1") (= "=") (cast_expression "(char *)(piVar11[0x19] + iVar20 * 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x19] + iVar20 * 0x18)" (( "(") (binary_expression "piVar11[0x19] + iVar20 * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar20 * 0x18" (identifier "iVar20") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*pcVar1 = cVar9;" (assignment_expression "*pcVar1 = cVar9" (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) (= "=") (identifier "cVar9")) (; ";")) (expression_statement "pcVar1[2] = '\0';" (assignment_expression "pcVar1[2] = '\0'" (subscript_expression "pcVar1[2]" (identifier "pcVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[3] = '\0';" (assignment_expression "pcVar1[3] = '\0'" (subscript_expression "pcVar1[3]" (identifier "pcVar1") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*(uint *)(pcVar1 + 4) = uVar13;" (assignment_expression "*(uint *)(pcVar1 + 4) = uVar13" (pointer_expression "*(uint *)(pcVar1 + 4)" (* "*") (cast_expression "(uint *)(pcVar1 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar1 + 4)" (( "(") (binary_expression "pcVar1 + 4" (identifier "pcVar1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "*(int *)(pcVar1 + 8) = iVar21 + iVar18;" (assignment_expression "*(int *)(pcVar1 + 8) = iVar21 + iVar18" (pointer_expression "*(int *)(pcVar1 + 8)" (* "*") (cast_expression "(int *)(pcVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar1 + 8)" (( "(") (binary_expression "pcVar1 + 8" (identifier "pcVar1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar21 + iVar18" (identifier "iVar21") (+ "+") (identifier "iVar18"))) (; ";")) (expression_statement "pcVar1[0xc] = '\0';" (assignment_expression "pcVar1[0xc] = '\0'" (subscript_expression "pcVar1[0xc]" (identifier "pcVar1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0xd] = '\0';" (assignment_expression "pcVar1[0xd] = '\0'" (subscript_expression "pcVar1[0xd]" (identifier "pcVar1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0xe] = '\0';" (assignment_expression "pcVar1[0xe] = '\0'" (subscript_expression "pcVar1[0xe]" (identifier "pcVar1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0xf] = '\0';" (assignment_expression "pcVar1[0xf] = '\0'" (subscript_expression "pcVar1[0xf]" (identifier "pcVar1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x10] = '\0';" (assignment_expression "pcVar1[0x10] = '\0'" (subscript_expression "pcVar1[0x10]" (identifier "pcVar1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x11] = '\0';" (assignment_expression "pcVar1[0x11] = '\0'" (subscript_expression "pcVar1[0x11]" (identifier "pcVar1") ([ "[") (number_literal "0x11") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x12] = '\0';" (assignment_expression "pcVar1[0x12] = '\0'" (subscript_expression "pcVar1[0x12]" (identifier "pcVar1") ([ "[") (number_literal "0x12") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x13] = '\0';" (assignment_expression "pcVar1[0x13] = '\0'" (subscript_expression "pcVar1[0x13]" (identifier "pcVar1") ([ "[") (number_literal "0x13") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[1] = '\0';" (assignment_expression "pcVar1[1] = '\0'" (subscript_expression "pcVar1[1]" (identifier "pcVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x14] = '\0';" (assignment_expression "pcVar1[0x14] = '\0'" (subscript_expression "pcVar1[0x14]" (identifier "pcVar1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x15] = '\0';" (assignment_expression "pcVar1[0x15] = '\0'" (subscript_expression "pcVar1[0x15]" (identifier "pcVar1") ([ "[") (number_literal "0x15") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x16] = '\0';" (assignment_expression "pcVar1[0x16] = '\0'" (subscript_expression "pcVar1[0x16]" (identifier "pcVar1") ([ "[") (number_literal "0x16") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar1[0x17] = '\0';" (assignment_expression "pcVar1[0x17] = '\0'" (subscript_expression "pcVar1[0x17]" (identifier "pcVar1") ([ "[") (number_literal "0x17") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (expression_statement "iVar20 = unaff_EDI + 0x6cca1;" (assignment_expression "iVar20 = unaff_EDI + 0x6cca1" (identifier "iVar20") (= "=") (binary_expression "unaff_EDI + 0x6cca1" (identifier "unaff_EDI") (+ "+") (number_literal "0x6cca1"))) (; ";")) (if_statement "if (-1 < iVar19) {\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }" (if "if") (parenthesized_expression "(-1 < iVar19)" (( "(") (binary_expression "-1 < iVar19" (number_literal "-1") (< "<") (identifier "iVar19")) () ")")) (compound_statement "{\n              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);\n            }" ({ "{") (expression_statement "iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);" (assignment_expression "iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1])" (identifier "iVar20") (= "=") (pointer_expression "*(int *)(iVar19 * 0x10 + piVar16[1])" (* "*") (cast_expression "(int *)(iVar19 * 0x10 + piVar16[1])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 * 0x10 + piVar16[1])" (( "(") (binary_expression "iVar19 * 0x10 + piVar16[1]" (binary_expression "iVar19 * 0x10" (identifier "iVar19") (* "*") (number_literal "0x10")) (+ "+") (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20)" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6b66a,iVar20)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6b66a" (identifier "unaff_EDI") (+ "+") (number_literal "0x6b66a")) (, ",") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "uVar13 = (uint)*(ushort *)(puVar12 + 0xd);" (assignment_expression "uVar13 = (uint)*(ushort *)(puVar12 + 0xd)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(ushort *)(puVar12 + 0xd)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(puVar12 + 0xd)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0xd)" (( "(") (binary_expression "puVar12 + 0xd" (identifier "puVar12") (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (if_statement "if ((int)uVar13 <= iVar18) goto LAB_000f0926;" (if "if") (parenthesized_expression "((int)uVar13 <= iVar18)" (( "(") (binary_expression "(int)uVar13 <= iVar18" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (<= "<=") (identifier "iVar18")) () ")")) (goto_statement "goto LAB_000f0926;" (goto "goto") (statement_identifier "LAB_000f0926") (; ";"))) (} "}"))) (expression_statement "iVar19 = *piVar10;" (assignment_expression "iVar19 = *piVar10" (identifier "iVar19") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "piVar10[0xd] = ~param_3;" (assignment_expression "piVar10[0xd] = ~param_3" (subscript_expression "piVar10[0xd]" (identifier "piVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (unary_expression "~param_3" (~ "~") (identifier "param_3"))) (; ";")) (if_statement "if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }\n          else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0)" (( "(") (binary_expression "*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0" (pointer_expression "*(int *)(iVar18 * 0x14 + puVar12[10] + 4)" (* "*") (cast_expression "(int *)(iVar18 * 0x14 + puVar12[10] + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 * 0x14 + puVar12[10] + 4)" (( "(") (binary_expression "iVar18 * 0x14 + puVar12[10] + 4" (binary_expression "iVar18 * 0x14 + puVar12[10]" (binary_expression "iVar18 * 0x14" (identifier "iVar18") (* "*") (number_literal "0x14")) (+ "+") (subscript_expression "puVar12[10]" (identifier "puVar12") ([ "[") (number_literal "10") (] "]"))) (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n          }" ({ "{") (if_statement "if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }" (if "if") (parenthesized_expression "(*(char *)(iVar19 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar19 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar19 + 0x4d)" (* "*") (cast_expression "(char *)(iVar19 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x4d)" (( "(") (binary_expression "iVar19 + 0x4d" (identifier "iVar19") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              FUN_000cb850();\n            }" ({ "{") (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" (identifier "FUN_000cb850") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" (else "else") (compound_statement "{\n            iVar20 = FUN_0005e9a0();\n            if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }\n            if (iVar20 != 0) {\n              FUN_00063d60();\n            }\n          }" ({ "{") (expression_statement "iVar20 = FUN_0005e9a0();" (assignment_expression "iVar20 = FUN_0005e9a0()" (identifier "iVar20") (= "=") (call_expression "FUN_0005e9a0()" (identifier "FUN_0005e9a0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (*(char *)(iVar19 + 0x4d) == '\0') {\n              FUN_000cb850();\n            }" (if "if") (parenthesized_expression "(*(char *)(iVar19 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar19 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar19 + 0x4d)" (* "*") (cast_expression "(char *)(iVar19 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x4d)" (( "(") (binary_expression "iVar19 + 0x4d" (identifier "iVar19") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              FUN_000cb850();\n            }" ({ "{") (expression_statement "FUN_000cb850();" (call_expression "FUN_000cb850()" (identifier "FUN_000cb850") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar20 != 0) {\n              FUN_00063d60();\n            }" (if "if") (parenthesized_expression "(iVar20 != 0)" (( "(") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_00063d60();\n            }" ({ "{") (expression_statement "FUN_00063d60();" (call_expression "FUN_00063d60()" (identifier "FUN_00063d60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar10[0xd] = 0;" (assignment_expression "piVar10[0xd] = 0" (subscript_expression "piVar10[0xd]" (identifier "piVar10") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = iVar18 + 1;" (assignment_expression "iVar19 = iVar18 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18)" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddf5" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddf5")) (, ",") (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "uVar13 = (uint)*(ushort *)(puVar12 + 0xd);" (assignment_expression "uVar13 = (uint)*(ushort *)(puVar12 + 0xd)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(ushort *)(puVar12 + 0xd)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(puVar12 + 0xd)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0xd)" (( "(") (binary_expression "puVar12 + 0xd" (identifier "puVar12") (+ "+") (number_literal "0xd")) () ")"))))) (; ";")) (expression_statement "iVar18 = iVar19;" (assignment_expression "iVar18 = iVar19" (identifier "iVar18") (= "=") (identifier "iVar19")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 < (int)uVar13)" (( "(") (binary_expression "iVar19 < (int)uVar13" (identifier "iVar19") (< "<") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13"))) () ")")) (; ";")) (labeled_statement "LAB_000f0926:\n        iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (statement_identifier "LAB_000f0926") (: ":") (expression_statement "iVar18 = *(int *)(extraout_ECX + local_9c * 4);" (assignment_expression "iVar18 = *(int *)(extraout_ECX + local_9c * 4)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(extraout_ECX + local_9c * 4)" (* "*") (cast_expression "(int *)(extraout_ECX + local_9c * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(extraout_ECX + local_9c * 4)" (( "(") (binary_expression "extraout_ECX + local_9c * 4" (identifier "extraout_ECX") (+ "+") (binary_expression "local_9c * 4" (identifier "local_9c") (* "*") (number_literal "4"))) () ")"))))) (; ";"))) (} "}")))) (expression_statement "FUN_00072f80(uVar13,iVar18);" (call_expression "FUN_00072f80(uVar13,iVar18)" (identifier "FUN_00072f80") (argument_list "(uVar13,iVar18)" (( "(") (identifier "uVar13") (, ",") (identifier "iVar18") () ")"))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12)" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6ddee,*puVar12)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6ddee" (identifier "unaff_EDI") (+ "+") (number_literal "0x6ddee")) (, ",") (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) () ")"))) (; ";")) (if_statement "if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }" (if "if") (parenthesized_expression "(((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0))" (( "(") (binary_expression "((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||\n         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)" (parenthesized_expression "((bVar23 && param_5 == '\0') && (local_80 == puVar12))" (( "(") (binary_expression "(bVar23 && param_5 == '\0') && (local_80 == puVar12)" (parenthesized_expression "(bVar23 && param_5 == '\0')" (( "(") (binary_expression "bVar23 && param_5 == '\0'" (identifier "bVar23") (&& "&&") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")) (&& "&&") (parenthesized_expression "(local_80 == puVar12)" (( "(") (binary_expression "local_80 == puVar12" (identifier "local_80") (== "==") (identifier "puVar12")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)" (( "(") (comma_expression "uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0" (assignment_expression "uVar13 = (uint)*(byte *)((int)puVar12 + 0x36)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(byte *)((int)puVar12 + 0x36)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar12 + 0x36)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x36)" (( "(") (binary_expression "(int)puVar12 + 0x36" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x36")) () ")"))))) (, ",") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        FUN_0006dec0();\n        goto LAB_000f0608;\n      }" ({ "{") (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" (identifier "FUN_0006dec0") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000f0608;" (goto "goto") (statement_identifier "LAB_000f0608") (; ";")) (} "}"))) (if_statement "if (local_7b == 0xb) {\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }\n      else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" (if "if") (parenthesized_expression "(local_7b == 0xb)" (( "(") (binary_expression "local_7b == 0xb" (identifier "local_7b") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n        if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }\n        if (puVar12 != local_88) goto LAB_000f09ad;\nLAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;\n        bVar6 = bVar23;\n      }" ({ "{") (if_statement "if (uVar13 == 0xb) {\n          uVar13 = 2;\n        }" (if "if") (parenthesized_expression "(uVar13 == 0xb)" (( "(") (binary_expression "uVar13 == 0xb" (identifier "uVar13") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n          uVar13 = 2;\n        }" ({ "{") (expression_statement "uVar13 = 2;" (assignment_expression "uVar13 = 2" (identifier "uVar13") (= "=") (number_literal "2")) (; ";")) (} "}"))) (if_statement "if (puVar12 != local_88) goto LAB_000f09ad;" (if "if") (parenthesized_expression "(puVar12 != local_88)" (( "(") (binary_expression "puVar12 != local_88" (identifier "puVar12") (!= "!=") (identifier "local_88")) () ")")) (goto_statement "goto LAB_000f09ad;" (goto "goto") (statement_identifier "LAB_000f09ad") (; ";"))) (labeled_statement "LAB_000f0c5d:\n        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;" (statement_identifier "LAB_000f0c5d") (: ":") (expression_statement "uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;" (assignment_expression "uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6" (identifier "uVar13") (= "=") (binary_expression "(-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6" (parenthesized_expression "(-(uint)(local_6c[2] == 0) & 0xfffffffe)" (( "(") (binary_expression "-(uint)(local_6c[2] == 0) & 0xfffffffe" (unary_expression "-(uint)(local_6c[2] == 0)" (- "-") (call_expression "(uint)(local_6c[2] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_6c[2] == 0)" (( "(") (binary_expression "local_6c[2] == 0" (subscript_expression "local_6c[2]" (identifier "local_6c") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xfffffffe")) () ")")) (+ "+") (number_literal "6"))) (; ";"))) (expression_statement "bVar6 = bVar23;" (assignment_expression "bVar6 = bVar23" (identifier "bVar6") (= "=") (identifier "bVar23")) (; ";")) (} "}")) (else_clause "else {\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" (else "else") (compound_statement "{\n        uVar13 = (uint)local_7b;\n        if (puVar12 == local_88) goto LAB_000f0c5d;\nLAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;\n      }" ({ "{") (expression_statement "uVar13 = (uint)local_7b;" (assignment_expression "uVar13 = (uint)local_7b" (identifier "uVar13") (= "=") (cast_expression "(uint)local_7b" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_7b"))) (; ";")) (if_statement "if (puVar12 == local_88) goto LAB_000f0c5d;" (if "if") (parenthesized_expression "(puVar12 == local_88)" (( "(") (binary_expression "puVar12 == local_88" (identifier "puVar12") (== "==") (identifier "local_88")) () ")")) (goto_statement "goto LAB_000f0c5d;" (goto "goto") (statement_identifier "LAB_000f0c5d") (; ";"))) (labeled_statement "LAB_000f09ad:\n        bVar6 = uVar13 == 5 || bVar23;" (statement_identifier "LAB_000f09ad") (: ":") (expression_statement "bVar6 = uVar13 == 5 || bVar23;" (assignment_expression "bVar6 = uVar13 == 5 || bVar23" (identifier "bVar6") (= "=") (binary_expression "uVar13 == 5 || bVar23" (binary_expression "uVar13 == 5" (identifier "uVar13") (== "==") (number_literal "5")) (|| "||") (identifier "bVar23"))) (; ";"))) (} "}")))) (expression_statement "FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));" (call_expression "FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32))" (identifier "FUN_00072fe0") (argument_list "(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32))" (( "(") (identifier "local_84") (, ",") (identifier "iVar21") (, ",") (pointer_expression "*(undefined2 *)((int)puVar12 + 0x32)" (* "*") (cast_expression "(undefined2 *)((int)puVar12 + 0x32)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x32)" (( "(") (binary_expression "(int)puVar12 + 0x32" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x32")) () ")")))) () ")"))) (; ";")) (expression_statement "local_b0 = iVar21;" (assignment_expression "local_b0 = iVar21" (identifier "local_b0") (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (local_80 != puVar12) {\n        local_b0 = FUN_00045e40();\n      }" (if "if") (parenthesized_expression "(local_80 != puVar12)" (( "(") (binary_expression "local_80 != puVar12" (identifier "local_80") (!= "!=") (identifier "puVar12")) () ")")) (compound_statement "{\n        local_b0 = FUN_00045e40();\n      }" ({ "{") (expression_statement "local_b0 = FUN_00045e40();" (assignment_expression "local_b0 = FUN_00045e40()" (identifier "local_b0") (= "=") (call_expression "FUN_00045e40()" (identifier "FUN_00045e40") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if (bVar6) {\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (compound_statement "{\n        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }\n      }" ({ "{") (if_statement "if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }\n        else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" (if "if") (parenthesized_expression "((*(byte *)(piVar16 + 9) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(piVar16 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar16 + 9) & 0x20)" (( "(") (binary_expression "*(byte *)(piVar16 + 9) & 0x20" (pointer_expression "*(byte *)(piVar16 + 9)" (* "*") (cast_expression "(byte *)(piVar16 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar16 + 9)" (( "(") (binary_expression "piVar16 + 9" (identifier "piVar16") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00073150(local_b0);\n          if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }\n        }" ({ "{") (expression_statement "FUN_00073150(local_b0);" (call_expression "FUN_00073150(local_b0)" (identifier "FUN_00073150") (argument_list "(local_b0)" (( "(") (identifier "local_b0") () ")"))) (; ";")) (if_statement "if (param_4 != 0) {\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00072f80(local_84,param_4);\n            if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }\n          }" ({ "{") (expression_statement "FUN_00072f80(local_84,param_4);" (call_expression "FUN_00072f80(local_84,param_4)" (identifier "FUN_00072f80") (argument_list "(local_84,param_4)" (( "(") (identifier "local_84") (, ",") (identifier "param_4") () ")"))) (; ";")) (if_statement "if (0 < piVar11[0x1a]) {\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }" (if "if") (parenthesized_expression "(0 < piVar11[0x1a])" (( "(") (binary_expression "0 < piVar11[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n            }" ({ "{") (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (* "*") (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x18"))) (+ "+") (number_literal "-0x16")) () ")")))) (= "=") (number_literal "0x90")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" (else "else") (compound_statement "{\n          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }\n          if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }\n        }" ({ "{") (if_statement "if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }" (if "if") (parenthesized_expression "((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0))" (( "(") (binary_expression "(local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)" (parenthesized_expression "(local_80 != puVar12)" (( "(") (binary_expression "local_80 != puVar12" (identifier "local_80") (!= "!=") (identifier "puVar12")) () ")")) (&& "&&") (parenthesized_expression "(*(short *)((int)local_80 + 0x32) != 0)" (( "(") (binary_expression "*(short *)((int)local_80 + 0x32) != 0" (pointer_expression "*(short *)((int)local_80 + 0x32)" (* "*") (cast_expression "(short *)((int)local_80 + 0x32)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            iVar18 = 0;\n            do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n          }" ({ "{") (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));" (do "do") (compound_statement "{\n              iVar19 = iVar18 * 2;\n              sVar3 = *(short *)(local_80[1] + iVar18 * 2);\n              if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }\n              iVar20 = local_b0 + iVar18;\n              iVar18 = iVar18 + 1;\n              FUN_00072f80(uVar14,iVar20);\n              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));\n            }" ({ "{") (expression_statement "iVar19 = iVar18 * 2;" (assignment_expression "iVar19 = iVar18 * 2" (identifier "iVar19") (= "=") (binary_expression "iVar18 * 2" (identifier "iVar18") (* "*") (number_literal "2"))) (; ";")) (expression_statement "sVar3 = *(short *)(local_80[1] + iVar18 * 2);" (assignment_expression "sVar3 = *(short *)(local_80[1] + iVar18 * 2)" (identifier "sVar3") (= "=") (pointer_expression "*(short *)(local_80[1] + iVar18 * 2)" (* "*") (cast_expression "(short *)(local_80[1] + iVar18 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80[1] + iVar18 * 2)" (( "(") (binary_expression "local_80[1] + iVar18 * 2" (subscript_expression "local_80[1]" (identifier "local_80") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar18 * 2" (identifier "iVar18") (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if (*(ushort *)(puVar12 + 0xd) == 0) {\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }\n              else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" (if "if") (parenthesized_expression "(*(ushort *)(puVar12 + 0xd) == 0)" (( "(") (binary_expression "*(ushort *)(puVar12 + 0xd) == 0" (pointer_expression "*(ushort *)(puVar12 + 0xd)" (* "*") (cast_expression "(ushort *)(puVar12 + 0xd)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0xd)" (( "(") (binary_expression "puVar12 + 0xd" (identifier "puVar12") (+ "+") (number_literal "0xd")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000f0f72:\n                uVar14 = 0xffffffff;\n              }" ({ "{") (labeled_statement "LAB_000f0f72:\n                uVar14 = 0xffffffff;" (statement_identifier "LAB_000f0f72") (: ":") (expression_statement "uVar14 = 0xffffffff;" (assignment_expression "uVar14 = 0xffffffff" (identifier "uVar14") (= "=") (number_literal "0xffffffff")) (; ";"))) (} "}")) (else_clause "else {\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" (else "else") (compound_statement "{\n                uVar14 = 0;\n                if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }\n              }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (sVar3 != *(short *)puVar12[1]) {\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }" (if "if") (parenthesized_expression "(sVar3 != *(short *)puVar12[1])" (( "(") (binary_expression "sVar3 != *(short *)puVar12[1]" (identifier "sVar3") (!= "!=") (pointer_expression "*(short *)puVar12[1]" (* "*") (cast_expression "(short *)puVar12[1]" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]"))))) () ")")) (compound_statement "{\n                  do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);\n                  uVar14 = (uint)(short)uVar14;\n                }" ({ "{") (do_statement "do {\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);" (do "do") (compound_statement "{\n                    uVar14 = uVar14 + 1;\n                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;\n                  }" ({ "{") (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;" (if "if") (parenthesized_expression "(*(ushort *)(puVar12 + 0xd) == uVar14)" (( "(") (binary_expression "*(ushort *)(puVar12 + 0xd) == uVar14" (pointer_expression "*(ushort *)(puVar12 + 0xd)" (* "*") (cast_expression "(ushort *)(puVar12 + 0xd)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0xd)" (( "(") (binary_expression "puVar12 + 0xd" (identifier "puVar12") (+ "+") (number_literal "0xd")) () ")")))) (== "==") (identifier "uVar14")) () ")")) (goto_statement "goto LAB_000f0f72;" (goto "goto") (statement_identifier "LAB_000f0f72") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(sVar3 != ((short *)puVar12[1])[uVar14])" (( "(") (binary_expression "sVar3 != ((short *)puVar12[1])[uVar14]" (identifier "sVar3") (!= "!=") (subscript_expression "((short *)puVar12[1])[uVar14]" (parenthesized_expression "((short *)puVar12[1])" (( "(") (cast_expression "(short *)puVar12[1]" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]"))) () ")")) ([ "[") (identifier "uVar14") (] "]"))) () ")")) (; ";")) (expression_statement "uVar14 = (uint)(short)uVar14;" (assignment_expression "uVar14 = (uint)(short)uVar14" (identifier "uVar14") (= "=") (cast_expression "(uint)(short)uVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(short)uVar14" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar14")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar20 = local_b0 + iVar18;" (assignment_expression "iVar20 = local_b0 + iVar18" (identifier "iVar20") (= "=") (binary_expression "local_b0 + iVar18" (identifier "local_b0") (+ "+") (identifier "iVar18"))) (; ";")) (expression_statement "iVar18 = iVar18 + 1;" (assignment_expression "iVar18 = iVar18 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00072f80(uVar14,iVar20);" (call_expression "FUN_00072f80(uVar14,iVar20)" (identifier "FUN_00072f80") (argument_list "(uVar14,iVar20)" (( "(") (identifier "uVar14") (, ",") (identifier "iVar20") () ")"))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]))" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6dd5f,*piVar16,\n                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]))" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6dd5f" (identifier "unaff_EDI") (+ "+") (number_literal "0x6dd5f")) (, ",") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (, ",") (pointer_expression "*(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" (* "*") (cast_expression "(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1])" (( "(") (binary_expression "*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]" (binary_expression "*(short *)(local_80[1] + iVar19) * 0x10" (pointer_expression "*(short *)(local_80[1] + iVar19)" (* "*") (cast_expression "(short *)(local_80[1] + iVar19)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80[1] + iVar19)" (( "(") (binary_expression "local_80[1] + iVar19" (subscript_expression "local_80[1]" (identifier "local_80") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar19")) () ")")))) (* "*") (number_literal "0x10")) (+ "+") (subscript_expression "piVar16[1]" (identifier "piVar16") ([ "[") (number_literal "1") (] "]"))) () ")")))) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32))" (( "(") (binary_expression "iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32)" (identifier "iVar18") (< "<") (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")"))))) () ")")) (; ";")) (} "}"))) (if_statement "if (param_4 != 0) {\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);\n            iVar18 = local_b0;\n            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }\n            if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }\n          }" ({ "{") (expression_statement "iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);" (assignment_expression "iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32)" (identifier "iVar19") (= "=") (binary_expression "piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32)" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (binary_expression "(uint)*(ushort *)((int)local_80 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")")))))) (; ";")) (expression_statement "iVar18 = local_b0;" (assignment_expression "iVar18 = local_b0" (identifier "iVar18") (= "=") (identifier "local_b0")) (; ";")) (if_statement "if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {\n              iVar18 = iVar21;\n            }" (if "if") (parenthesized_expression "((*(byte *)((int)puVar12 + 0x37) & 3) == 2)" (( "(") (binary_expression "(*(byte *)((int)puVar12 + 0x37) & 3) == 2" (parenthesized_expression "(*(byte *)((int)puVar12 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)((int)puVar12 + 0x37) & 3" (pointer_expression "*(byte *)((int)puVar12 + 0x37)" (* "*") (cast_expression "(byte *)((int)puVar12 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + 0x37)" (( "(") (binary_expression "(int)puVar12 + 0x37" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n              iVar18 = iVar21;\n            }" ({ "{") (expression_statement "iVar18 = iVar21;" (assignment_expression "iVar18 = iVar21" (identifier "iVar18") (= "=") (identifier "iVar21")) (; ";")) (} "}"))) (if_statement "if (*(ushort *)((int)local_80 + 0x32) != 0) {\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }" (if "if") (parenthesized_expression "(*(ushort *)((int)local_80 + 0x32) != 0)" (( "(") (binary_expression "*(ushort *)((int)local_80 + 0x32) != 0" (pointer_expression "*(ushort *)((int)local_80 + 0x32)" (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar20 = 0;\n              do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));\n            }" ({ "{") (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));" (do "do") (compound_statement "{\n                while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }\n                iVar20 = iVar20 + 1;\n              }" ({ "{") (while_statement "while( true ) {\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  FUN_0008c270();\n                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }\n                  FUN_00072f80(iVar19,iVar18 + iVar20);\n                  FUN_00062750(0xfffffffe);\n                  if (piVar11[0x1a] < 1) break;\n                  iVar20 = iVar20 + 1;\n                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;\n                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;\n                }" ({ "{") (expression_statement "FUN_0008c270();" (call_expression "FUN_0008c270()" (identifier "FUN_0008c270") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {\n                    iVar19 = local_84;\n                  }" (if "if") (parenthesized_expression "(*(ushort *)((int)local_80 + 0x32) - 1 == iVar20)" (( "(") (binary_expression "*(ushort *)((int)local_80 + 0x32) - 1 == iVar20" (binary_expression "*(ushort *)((int)local_80 + 0x32) - 1" (pointer_expression "*(ushort *)((int)local_80 + 0x32)" (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")")))) (- "-") (number_literal "1")) (== "==") (identifier "iVar20")) () ")")) (compound_statement "{\n                    iVar19 = local_84;\n                  }" ({ "{") (expression_statement "iVar19 = local_84;" (assignment_expression "iVar19 = local_84" (identifier "iVar19") (= "=") (identifier "local_84")) (; ";")) (} "}"))) (expression_statement "FUN_00072f80(iVar19,iVar18 + iVar20);" (call_expression "FUN_00072f80(iVar19,iVar18 + iVar20)" (identifier "FUN_00072f80") (argument_list "(iVar19,iVar18 + iVar20)" (( "(") (identifier "iVar19") (, ",") (binary_expression "iVar18 + iVar20" (identifier "iVar18") (+ "+") (identifier "iVar20")) () ")"))) (; ";")) (expression_statement "FUN_00062750(0xfffffffe);" (call_expression "FUN_00062750(0xfffffffe)" (identifier "FUN_00062750") (argument_list "(0xfffffffe)" (( "(") (number_literal "0xfffffffe") () ")"))) (; ";")) (if_statement "if (piVar11[0x1a] < 1) break;" (if "if") (parenthesized_expression "(piVar11[0x1a] < 1)" (( "(") (binary_expression "piVar11[0x1a] < 1" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;" (assignment_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90" (pointer_expression "*(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (* "*") (cast_expression "(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16)" (( "(") (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16" (binary_expression "piVar11[0x19] + piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "piVar11[0x1a] * 0x18" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x18"))) (+ "+") (number_literal "-0x16")) () ")")))) (= "=") (number_literal "0x90")) (; ";")) (if_statement "if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;" (if "if") (parenthesized_expression "((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20)" (( "(") (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20" (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")")))) (<= "<=") (identifier "iVar20")) () ")")) (goto_statement "goto LAB_000f0a30;" (goto "goto") (statement_identifier "LAB_000f0a30") (; ";"))) (} "}"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32))" (( "(") (binary_expression "iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32)" (identifier "iVar20") (< "<") (binary_expression "(int)(uint)*(ushort *)((int)local_80 + 0x32)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)((int)local_80 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_80 + 0x32)" (( "(") (binary_expression "(int)local_80 + 0x32" (cast_expression "(int)local_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_80")) (+ "+") (number_literal "0x32")) () ")"))))) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (labeled_statement "LAB_000f0a30:\n      if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" (statement_identifier "LAB_000f0a30") (: ":") (if_statement "if (uVar13 == 4) {\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }\n      else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" (if "if") (parenthesized_expression "(uVar13 == 4)" (( "(") (binary_expression "uVar13 == 4" (identifier "uVar13") (== "==") (number_literal "4")) () ")")) (compound_statement "{\nLAB_000f0b65:\n        FUN_00073150(param_7);\n        if (puVar12 != local_88) goto LAB_000f0a5e;\nLAB_000f0b8a:\n        FUN_00073150(local_58 + 1);\n        iVar18 = piVar11[0x1a] + -1;\n        if (-1 < local_54) {\n          iVar18 = local_54;\n        }\n        iVar19 = unaff_EDI + 0xccb05;\n        if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }\n        *(int *)(iVar19 + 8) = piVar11[0x1a];\n      }" ({ "{") (labeled_statement "LAB_000f0b65:\n        FUN_00073150(param_7);" (statement_identifier "LAB_000f0b65") (: ":") (expression_statement "FUN_00073150(param_7);" (call_expression "FUN_00073150(param_7)" (identifier "FUN_00073150") (argument_list "(param_7)" (( "(") (identifier "param_7") () ")"))) (; ";"))) (if_statement "if (puVar12 != local_88) goto LAB_000f0a5e;" (if "if") (parenthesized_expression "(puVar12 != local_88)" (( "(") (binary_expression "puVar12 != local_88" (identifier "puVar12") (!= "!=") (identifier "local_88")) () ")")) (goto_statement "goto LAB_000f0a5e;" (goto "goto") (statement_identifier "LAB_000f0a5e") (; ";"))) (labeled_statement "LAB_000f0b8a:\n        FUN_00073150(local_58 + 1);" (statement_identifier "LAB_000f0b8a") (: ":") (expression_statement "FUN_00073150(local_58 + 1);" (call_expression "FUN_00073150(local_58 + 1)" (identifier "FUN_00073150") (argument_list "(local_58 + 1)" (( "(") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1")) () ")"))) (; ";"))) (expression_statement "iVar18 = piVar11[0x1a] + -1;" (assignment_expression "iVar18 = piVar11[0x1a] + -1" (identifier "iVar18") (= "=") (binary_expression "piVar11[0x1a] + -1" (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < local_54) {\n          iVar18 = local_54;\n        }" (if "if") (parenthesized_expression "(-1 < local_54)" (( "(") (binary_expression "-1 < local_54" (number_literal "-1") (< "<") (identifier "local_54")) () ")")) (compound_statement "{\n          iVar18 = local_54;\n        }" ({ "{") (expression_statement "iVar18 = local_54;" (assignment_expression "iVar18 = local_54" (identifier "iVar18") (= "=") (identifier "local_54")) (; ";")) (} "}"))) (expression_statement "iVar19 = unaff_EDI + 0xccb05;" (assignment_expression "iVar19 = unaff_EDI + 0xccb05" (identifier "iVar19") (= "=") (binary_expression "unaff_EDI + 0xccb05" (identifier "unaff_EDI") (+ "+") (number_literal "0xccb05"))) (; ";")) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar11 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x4d)" (( "(") (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          iVar19 = piVar11[0x19] + iVar18 * 0x18;\n        }" ({ "{") (expression_statement "iVar19 = piVar11[0x19] + iVar18 * 0x18;" (assignment_expression "iVar19 = piVar11[0x19] + iVar18 * 0x18" (identifier "iVar19") (= "=") (binary_expression "piVar11[0x19] + iVar18 * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar18 * 0x18" (identifier "iVar18") (* "*") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar19 + 8) = piVar11[0x1a];" (assignment_expression "*(int *)(iVar19 + 8) = piVar11[0x1a]" (pointer_expression "*(int *)(iVar19 + 8)" (* "*") (cast_expression "(int *)(iVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" (else "else") (compound_statement "{\n        if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }\n        if (puVar12 == local_88) goto LAB_000f0b8a;\nLAB_000f0a5e:\n        FUN_0006dec0();\n      }" ({ "{") (if_statement "if ((int)uVar13 < 5) {\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }\n        else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" (if "if") (parenthesized_expression "((int)uVar13 < 5)" (( "(") (binary_expression "(int)uVar13 < 5" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n          if ((int)uVar13 < 1) goto LAB_000f0c80;\n          FUN_00097090();\n        }" ({ "{") (if_statement "if ((int)uVar13 < 1) goto LAB_000f0c80;" (if "if") (parenthesized_expression "((int)uVar13 < 1)" (( "(") (binary_expression "(int)uVar13 < 1" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_000f0c80;" (goto "goto") (statement_identifier "LAB_000f0c80") (; ";"))) (expression_statement "FUN_00097090();" (call_expression "FUN_00097090()" (identifier "FUN_00097090") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" (else "else") (compound_statement "{\n          if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }\nLAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }\n          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);\n          local_5c = 1;\n        }" ({ "{") (if_statement "if (uVar13 == 6) {\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }" (if "if") (parenthesized_expression "(uVar13 == 6)" (( "(") (binary_expression "uVar13 == 6" (identifier "uVar13") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n            FUN_000f3260(puVar12,local_9c + param_2);\n            goto LAB_000f0b65;\n          }" ({ "{") (expression_statement "FUN_000f3260(puVar12,local_9c + param_2);" (call_expression "FUN_000f3260(puVar12,local_9c + param_2)" (identifier "FUN_000f3260") (argument_list "(puVar12,local_9c + param_2)" (( "(") (identifier "puVar12") (, ",") (binary_expression "local_9c + param_2" (identifier "local_9c") (+ "+") (identifier "param_2")) () ")"))) (; ";")) (goto_statement "goto LAB_000f0b65;" (goto "goto") (statement_identifier "LAB_000f0b65") (; ";")) (} "}"))) (labeled_statement "LAB_000f0c80:\n          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" (statement_identifier "LAB_000f0c80") (: ":") (if_statement "if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" (if "if") (parenthesized_expression "((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))))))" (( "(") (binary_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))\n             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))" (parenthesized_expression "(((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))" (( "(") (binary_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0)" (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x20) != 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x20" (pointer_expression "*(byte *)(iVar4 + 0x1d)" (* "*") (cast_expression "(byte *)(iVar4 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1d)" (( "(") (binary_expression "iVar4 + 0x1d" (identifier "iVar4") (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar18 = FUN_00049a60(0,0), iVar18 != 0)" (( "(") (comma_expression "iVar18 = FUN_00049a60(0,0), iVar18 != 0" (assignment_expression "iVar18 = FUN_00049a60(0,0)" (identifier "iVar18") (= "=") (call_expression "FUN_00049a60(0,0)" (identifier "FUN_00049a60") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))" (( "(") (parenthesized_expression "((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))))" (( "(") (binary_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&\n                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))" (binary_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*piVar10 + 0x1d) & 0x40)" (( "(") (binary_expression "*(byte *)(*piVar10 + 0x1d) & 0x40" (pointer_expression "*(byte *)(*piVar10 + 0x1d)" (* "*") (cast_expression "(byte *)(*piVar10 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar10 + 0x1d)" (( "(") (binary_expression "*piVar10 + 0x1d" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))" (( "(") (parenthesized_expression "(iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0))" (( "(") (comma_expression "iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)" (assignment_expression "iVar18 = FUN_00049430()" (identifier "iVar18") (= "=") (call_expression "FUN_00049430()" (identifier "FUN_00049430") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "*(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)" (binary_expression "*(int *)(iVar18 + 8) != 0" (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")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(piVar16[4] != 0)" (( "(") (binary_expression "piVar16[4] != 0" (subscript_expression "piVar16[4]" (identifier "piVar16") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            piVar15 = (int *)piVar10[0x1d];\n            if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }\n            *(undefined1 *)(piVar15 + 5) = 1;\n          }" ({ "{") (expression_statement "piVar15 = (int *)piVar10[0x1d];" (assignment_expression "piVar15 = (int *)piVar10[0x1d]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n              piVar15 = piVar10;\n            }" (if "if") (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              piVar15 = piVar10;\n            }" ({ "{") (expression_statement "piVar15 = piVar10;" (assignment_expression "piVar15 = piVar10" (identifier "piVar15") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar15 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar15 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar15 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar15 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar15 + 5)" (( "(") (binary_expression "piVar15 + 5" (identifier "piVar15") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2);" (call_expression "FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2)" (identifier "FUN_000efa90") (argument_list "(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,\n                       local_9c + param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "local_b0") (, ",") (cast_expression "(int)(short)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)local_78" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_78"))) (, ",") (number_literal "0") (, ",") (number_literal "5") (, ",") (binary_expression "local_80 == puVar12" (identifier "local_80") (== "==") (identifier "puVar12")) (, ",") (binary_expression "local_9c + param_2" (identifier "local_9c") (+ "+") (identifier "param_2")) () ")"))) (; ";")) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" (identifier "local_5c") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (puVar12 == local_88) goto LAB_000f0b8a;" (if "if") (parenthesized_expression "(puVar12 == local_88)" (( "(") (binary_expression "puVar12 == local_88" (identifier "puVar12") (== "==") (identifier "local_88")) () ")")) (goto_statement "goto LAB_000f0b8a;" (goto "goto") (statement_identifier "LAB_000f0b8a") (; ";"))) (labeled_statement "LAB_000f0a5e:\n        FUN_0006dec0();" (statement_identifier "LAB_000f0a5e") (: ":") (expression_statement "FUN_0006dec0();" (call_expression "FUN_0006dec0()" (identifier "FUN_0006dec0") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))))) (if_statement "if (local_b0 == iVar21) goto LAB_000f0608;" (if "if") (parenthesized_expression "(local_b0 == iVar21)" (( "(") (binary_expression "local_b0 == iVar21" (identifier "local_b0") (== "==") (identifier "iVar21")) () ")")) (goto_statement "goto LAB_000f0608;" (goto "goto") (statement_identifier "LAB_000f0608") (; ";"))) (if_statement "if (local_78 == 1) {\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" (if "if") (parenthesized_expression "(local_78 == 1)" (( "(") (binary_expression "local_78 == 1" (identifier "local_78") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }\n        goto LAB_000f0608;\n      }" ({ "{") (if_statement "if (local_b0 != 0) {\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }" (if "if") (parenthesized_expression "(local_b0 != 0)" (( "(") (binary_expression "local_b0 != 0" (identifier "local_b0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          bVar2 = *(byte *)((int)piVar10 + 0x13);\n          if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }\n        }" ({ "{") (expression_statement "bVar2 = *(byte *)((int)piVar10 + 0x13);" (assignment_expression "bVar2 = *(byte *)((int)piVar10 + 0x13)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((int)piVar10 + 0x13)" (* "*") (cast_expression "(byte *)((int)piVar10 + 0x13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + 0x13)" (( "(") (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (number_literal "0x13")) () ")"))))) (; ";")) (if_statement "if (bVar2 < 8) {\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }" (if "if") (parenthesized_expression "(bVar2 < 8)" (( "(") (binary_expression "bVar2 < 8" (identifier "bVar2") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;\n            piVar10[bVar2 + 0x24] = local_b0;\n          }" ({ "{") (expression_statement "*(byte *)((int)piVar10 + 0x13) = bVar2 + 1;" (assignment_expression "*(byte *)((int)piVar10 + 0x13) = bVar2 + 1" (pointer_expression "*(byte *)((int)piVar10 + 0x13)" (* "*") (cast_expression "(byte *)((int)piVar10 + 0x13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + 0x13)" (( "(") (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (number_literal "0x13")) () ")")))) (= "=") (binary_expression "bVar2 + 1" (identifier "bVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10[bVar2 + 0x24] = local_b0;" (assignment_expression "piVar10[bVar2 + 0x24] = local_b0" (subscript_expression "piVar10[bVar2 + 0x24]" (identifier "piVar10") ([ "[") (binary_expression "bVar2 + 0x24" (identifier "bVar2") (+ "+") (number_literal "0x24")) (] "]")) (= "=") (identifier "local_b0")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000f0608;" (goto "goto") (statement_identifier "LAB_000f0608") (; ";")) (} "}"))) (if_statement "if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;" (if "if") (parenthesized_expression "((int)local_78 <= piVar10[7])" (( "(") (binary_expression "(int)local_78 <= piVar10[7]" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (<= "<=") (subscript_expression "piVar10[7]" (identifier "piVar10") ([ "[") (number_literal "7") (] "]"))) () ")")) (goto_statement "goto LAB_000f0608;" (goto "goto") (statement_identifier "LAB_000f0608") (; ";"))) (expression_statement "piVar10[7] = local_78;" (assignment_expression "piVar10[7] = local_78" (subscript_expression "piVar10[7]" (identifier "piVar10") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "local_78")) (; ";")) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" (identifier "local_9c") (= "=") (binary_expression "local_9c + 1" (identifier "local_9c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10[8] = local_b0;" (assignment_expression "piVar10[8] = local_b0" (subscript_expression "piVar10[8]" (identifier "piVar10") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_b0")) (; ";")) (expression_statement "puVar12 = (undefined4 *)puVar12[5];" (assignment_expression "puVar12 = (undefined4 *)puVar12[5]" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)puVar12[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar12[5]" (identifier "puVar12") ([ "[") (number_literal "5") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar12 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar12 != (undefined4 *)0x0" (identifier "puVar12") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_000f0ab0:\n    if (local_60 == 0) goto LAB_000f0b10;" (statement_identifier "LAB_000f0ab0") (: ":") (if_statement "if (local_60 == 0) goto LAB_000f0b10;" (if "if") (parenthesized_expression "(local_60 == 0)" (( "(") (binary_expression "local_60 == 0" (identifier "local_60") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000f0b10;" (goto "goto") (statement_identifier "LAB_000f0b10") (; ";")))) (} "}")))) (expression_statement "FUN_00073150(local_60);" (call_expression "FUN_00073150(local_60)" (identifier "FUN_00073150") (argument_list "(local_60)" (( "(") (identifier "local_60") () ")"))) (; ";")) (expression_statement "FUN_0007e240(piVar11,unaff_EDI + 0x6de02);" (call_expression "FUN_0007e240(piVar11,unaff_EDI + 0x6de02)" (identifier "FUN_0007e240") (argument_list "(piVar11,unaff_EDI + 0x6de02)" (( "(") (identifier "piVar11") (, ",") (binary_expression "unaff_EDI + 0x6de02" (identifier "unaff_EDI") (+ "+") (number_literal "0x6de02")) () ")"))) (; ";")) (expression_statement "iVar4 = piVar11[0x1a];" (assignment_expression "iVar4 = piVar11[0x1a]" (identifier "iVar4") (= "=") (subscript_expression "piVar11[0x1a]" (identifier "piVar11") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (expression_statement "iVar21 = iVar4 + -1;" (assignment_expression "iVar21 = iVar4 + -1" (identifier "iVar21") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < local_48) {\n    iVar21 = local_48;\n  }" (if "if") (parenthesized_expression "(-1 < local_48)" (( "(") (binary_expression "-1 < local_48" (number_literal "-1") (< "<") (identifier "local_48")) () ")")) (compound_statement "{\n    iVar21 = local_48;\n  }" ({ "{") (expression_statement "iVar21 = local_48;" (assignment_expression "iVar21 = local_48" (identifier "iVar21") (= "=") (identifier "local_48")) (; ";")) (} "}"))) (if_statement "if (*(char *)(*piVar11 + 0x4d) == '\0') {\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }\n  else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" (if "if") (parenthesized_expression "(*(char *)(*piVar11 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar11 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar11 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar11 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + 0x4d)" (( "(") (binary_expression "*piVar11 + 0x4d" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;\n  }" ({ "{") (expression_statement "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;" (assignment_expression "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4" (pointer_expression "*(int *)(piVar11[0x19] + iVar21 * 0x18 + 8)" (* "*") (cast_expression "(int *)(piVar11[0x19] + iVar21 * 0x18 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11[0x19] + iVar21 * 0x18 + 8)" (( "(") (binary_expression "piVar11[0x19] + iVar21 * 0x18 + 8" (binary_expression "piVar11[0x19] + iVar21 * 0x18" (subscript_expression "piVar11[0x19]" (identifier "piVar11") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar21 * 0x18" (identifier "iVar21") (* "*") (number_literal "0x18"))) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (} "}")) (else_clause "else {\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" (else "else") (compound_statement "{\n    *(int *)(unaff_EDI + 0xccb0d) = iVar4;\n  }" ({ "{") (expression_statement "*(int *)(unaff_EDI + 0xccb0d) = iVar4;" (assignment_expression "*(int *)(unaff_EDI + 0xccb0d) = iVar4" (pointer_expression "*(int *)(unaff_EDI + 0xccb0d)" (* "*") (cast_expression "(int *)(unaff_EDI + 0xccb0d)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0xccb0d)" (( "(") (binary_expression "unaff_EDI + 0xccb0d" (identifier "unaff_EDI") (+ "+") (number_literal "0xccb0d")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (} "}")))) (labeled_statement "LAB_000f0b10:\n  *param_8 = local_5c;" (statement_identifier "LAB_000f0b10") (: ":") (expression_statement "*param_8 = local_5c;" (assignment_expression "*param_8 = local_5c" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (identifier "local_5c")) (; ";"))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_00153870();\n  }" ({ "{") (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1
               (type_1 *pParse,type_2 *pTab,int *aRegIdx,int var_3,int iIdxCur,int var_13,
               int regOldData,type_3 pkChng,type_3 overrideError,int var_34,int *pbMayReplace,
               int *aiChng,type_4 *pUpsert)

{
  type_5 *p;
  type_6 var_8;
  short var_57;
  int var_69;
  type_7 *db;
  int var_20;
  type_8 *var_25;
  type_7 *psVar6;
  type_9 *pcVar7;
  bool bVar8;
  type_6 var_31;
  type_3 uVar10;
  type_1 *pParse_00;
  type_5 *var_4;
  type_10 *pCVar11;
  type_11 var_15;
  type_12 *var_44;
  type_13 *var_54;
  char *p1;
  type_14 *pHVar15;
  char *var_21;
  type_1 *pPVar17;
  type_15 *zP4;
  char var_29;
  int var_48;
  int *piVar19;
  type_16 *pOVar20;
  type_2 *pTab_00;
  bool bVar21;
  int var_10;
  type_11 var_12;
  type_17 *var_46;
  int var_19;
  int var_9;
  type_18 *var_33;
  int var_2;
  bool var_58;
  type_19 uVar27;
  type_20 in_stack_00000021;
  type_20 in_stack_00000025;
  type_1 *in_stack_ffffff38;
  type_1 *var_28;
  type_1 *in_stack_ffffff40;
  type_1 *pPVar29;
  type_3 **in_stack_ffffff44;
  type_3 in_stack_ffffff48;
  int in_stack_ffffff4c;
  type_1 *var_66;
  int var_32;
  int var_23;
  int var_49;
  int local_94;
  type_17 *var_47;
  char *local_84;
  type_17 *var_6;
  type_6 var_14;
  type_11 var_67;
  type_4 *local_6c;
  int var_38;
  type_21 local_5c;
  int var_50;
  int var_63;
  int var_68;
  type_22 w;
  
  uVar27 = var_1();
  pTab_00 = (type_2 *)((type_23)uVar27 >> 0x20);
  pParse_00 = (type_1 *)uVar27;
  var_4 = pParse_00->pVdbe;
  local_6c = (type_4 *)var_34;
  var_29 = (char)iIdxCur;
  var_14 = (type_6)var_13;
  var_69 = *(int *)(var_2 + 0x14);
  db = pParse_00->db;
  var_58 = var_3 != 0;
  if (var_4 == (type_5 *)0x0) {
    in_stack_ffffff40 = (type_1 *)0xeff48;
    var_4 = var_5(pParse_00);
  }
  var_9 = (int)pTab_00->nCol;
  if ((pTab_00->tabFlags & 0x20) == 0) {
    var_8 = 1;
    var_67 = 1;
    var_6 = (type_17 *)0x0;
  }
  else {
    var_6 = pTab_00->pIndex;
    if (var_6 == (type_17 *)0x0) {
sqlite3GenerateConstraintChecks_cold_1033:
                    /* WARNING: Does not return */
      pcVar7 = (type_9 *)var_7();
      (*pcVar7)();
    }
    var_8 = var_6->field_0x37;
    while ((var_8 & 3) != 2) {
      var_6 = var_6->pNext;
      if (var_6 == (type_17 *)0x0) goto sqlite3GenerateConstraintChecks_cold_1033;
      var_8 = var_6->field_0x37;
    }
    var_8 = 0;
    var_67 = (type_11)var_6->nKeyCol;
  }
  var_10 = 0;
  if (0 < var_9) {
    do {
      while ((pTab_00->iPKey == var_10 ||
             ((var_11 != (type_24 *)0x0 && ((int)(&var_11->pParse)[var_10] < 0))
             ))) {
LAB_000f0048:
        var_10 = var_10 + 1;
        if (var_9 == var_10) goto LAB_000f0158;
      }
      pCVar11 = pTab_00->aCol + var_10;
      var_12 = (type_11)pCVar11->notNull;
      if (var_12 == 0) goto LAB_000f0048;
      var_28 = (type_1 *)((int)aRegIdx + var_10 + 1);
      var_15 = var_13 & 0xff;
      if ((var_14 == 0xb) && (var_15 = var_12, var_12 == 0xb)) {
LAB_000f009f:
        var_23 = 0;
LAB_000f00a7:
        var_15 = 2;
        pPVar29 = pParse_00->pToplevel;
        if (pParse_00->pToplevel == (type_1 *)0x0) {
          pPVar29 = pParse_00;
        }
        pPVar29->mayAbort = '\x01';
        pCVar11 = pTab_00->aCol + var_10;
      }
      else {
        if (var_15 == 5) {
          var_23 = 0;
          if (pCVar11->pDflt != (type_13 *)0x0) {
LAB_000f04a3:
            var_23 = pParse_00->nLabel + -1;
            pParse_00->nLabel = var_23;
            var_16(var_4,0x33,(int)var_28,var_23,(int)in_stack_ffffff38);
            var_17(pParse_00,pTab_00->aCol[var_10].pDflt,(int)var_28);
            var_16(var_4,0x33,(int)var_28,var_23,(int)in_stack_ffffff38);
          }
          goto LAB_000f00a7;
        }
        if (var_15 == 2) goto LAB_000f009f;
        if (var_15 < 3) {
          if (var_15 != 1) goto LAB_000f0025;
        }
        else if (var_15 != 3) {
          if (var_15 == 5) goto LAB_000f04a3;
LAB_000f0025:
          var_16(var_4,0x32,(int)var_28,regOldData,(int)in_stack_ffffff38);
          goto LAB_000f0048;
        }
        var_23 = 0;
      }
      in_stack_ffffff40 = (type_1 *)pCVar11->zName;
      var_21 = var_18(db,(char *)(var_19 + 0x6dd5f),pTab_00->zName);
      var_16(var_4,0x44,0x513,var_15,(int)var_28);
      in_stack_ffffff38 = var_28;
      if (var_4->db->mallocFailed == '\0') {
        var_20 = var_4->nOp;
        pOVar20 = var_4->aOp;
        pOVar20[var_20 + -1].p4type = -7;
        pOVar20[var_20 + -1].p4.p = var_21;
      }
      else if (var_21 != (char *)0x0) {
        in_stack_ffffff40 = (type_1 *)0xf050f;
        var_22(var_4->db,var_21);
        in_stack_ffffff38 = var_28;
      }
      if (0 < var_4->nOp) {
        var_4->aOp[var_4->nOp + -1].p5 = 1;
      }
      if (var_23 == 0) goto LAB_000f0048;
      var_10 = var_10 + 1;
      in_stack_ffffff40 = (type_1 *)0xf014b;
      var_24(var_4,var_23);
    } while (var_9 != var_10);
  }
LAB_000f0158:
  var_25 = pTab_00->pCheck;
  if ((var_25 != (type_8 *)0x0) && ((db->flags & 0x200) == 0)) {
    var_32 = 0;
    pParse_00->iSelfTab = ~(type_11)aRegIdx;
    var_12 = 2;
    if (var_14 != 0xb) {
      var_12 = var_13;
    }
    var_12 = var_12 & 0xff;
    var_33 = var_25->a;
    if (0 < var_25->nExpr) {
      do {
        var_28 = (type_1 *)var_33->pExpr;
        var_15 = 0;
        if (var_11 == (type_24 *)0x0) {
LAB_000f023c:
          var_9 = pParse_00->nLabel + -1;
          pParse_00->nLabel = var_9;
          var_26(pParse_00,(type_13 *)var_28,var_9,0x10);
          if (var_12 == 4) {
            var_16(var_4,0xb,0,regOldData,(int)var_28);
          }
          else {
            var_21 = var_33->zName;
            if (var_21 == (char *)0x0) {
              var_21 = pTab_00->zName;
            }
            if (var_12 == 5) {
              var_12 = 2;
            }
            var_28 = (type_1 *)0x0;
            var_27(pParse_00,0x113,var_12,var_21,'\0','\x03');
          }
          in_stack_ffffff40 = (type_1 *)0xf0295;
          var_24(var_4,var_9);
          in_stack_ffffff38 = var_28;
        }
        else {
          do {
            *(type_21 *)((int)&w.pParse + var_15) = 0;
            var_15 = var_15 + 4;
          } while (var_15 < 0x18);
          w.xExprCallback = (type_25 *)(var_19 + -0xa9f97);
          w.u.pNC = var_11;
          if (var_28 == (type_1 *)0x0) {
            if (var_29 == '\0') {
              var_31 = 0;
              goto LAB_000f0235;
            }
          }
          else {
            in_stack_ffffff40 = (type_1 *)0xf0222;
            var_30(&w,(type_13 *)var_28);
            var_31 = w.eCode;
            if (var_29 == '\0') {
LAB_000f0235:
              var_31 = var_31 & 0xfd;
            }
            if (var_31 != 0) goto LAB_000f023c;
          }
        }
        var_32 = var_32 + 1;
        var_33 = var_33 + 1;
      } while (var_32 < var_25->nExpr);
    }
    pParse_00->iSelfTab = 0;
  }
  bVar21 = (bool)(var_29 != '\0' & var_8);
  if (var_34 == 0) {
    var_47 = (type_17 *)0x0;
    var_50 = 0;
LAB_000f0322:
    if (!bVar21) goto LAB_000f0dc0;
    var_9 = pParse_00->nLabel + -1;
    pParse_00->nLabel = var_9;
    var_12 = var_13 & 0xff;
    if ((var_14 == 0xb) && (var_12 = (type_11)pTab_00->keyConf, var_12 == 0xb)) {
      if ((var_34 == 0) || (*(int *)(var_34 + 0x10) != 0)) {
        var_12 = 2;
LAB_000f0547:
        var_38 = 0;
        if (var_3 != 0) goto LAB_000f117a;
      }
      else {
LAB_000f11cd:
        if (*(int *)(var_34 + 8) == 0) {
          if (var_3 == 0) {
            var_35(var_4,(char *)(var_19 + 0x6ddab));
            in_stack_ffffff38 = (type_1 *)aRegIdx;
            var_16(var_4,0x1f,(int)pParse,var_9,(int)aRegIdx);
            goto _L51879;
          }
          var_38 = 0;
          var_12 = 4;
        }
        else {
          if (var_3 == 0) {
            var_35(var_4,(char *)(var_19 + 0x6ddab));
            var_16(var_4,0x1f,(int)pParse,var_9,(int)aRegIdx);
            in_stack_ffffff38 = pParse;
            var_36(pParse_00,(type_4 *)var_34,pTab_00,(type_17 *)0x0,(int)pParse);
_L51879:
            var_38 = 0;
            var_16(var_4,0xb,0,regOldData,(int)in_stack_ffffff38);
            local_5c = 0;
            goto LAB_000f05be;
          }
          var_12 = 6;
          var_38 = 0;
        }
LAB_000f117a:
        var_16(var_4,0x35,(int)aRegIdx,var_9,var_3);
        if (0 < var_4->nOp) {
          var_4->aOp[var_4->nOp + -1].p5 = 0x90;
        }
      }
      var_35(var_4,(char *)(var_19 + 0x6ddab));
      in_stack_ffffff38 = (type_1 *)aRegIdx;
      var_16(var_4,0x1f,(int)pParse,var_9,(int)aRegIdx);
      if (var_12 < 7) {
                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (*(type_9 *)(*(int *)(var_19 + 0x71541 + var_12 * 4) + var_19 + 0xcaf71))();
        return;
      }
      var_37(pParse_00,2,pTab_00);
      local_5c = 0;
    }
    else {
      if ((var_34 != 0) && (*(int *)(var_34 + 0x10) == 0)) goto LAB_000f11cd;
      if (var_12 != 5) goto LAB_000f0547;
      var_38 = 0;
      if ((var_14 != 5) && (pTab_00->pIndex != (type_17 *)0x0)) {
        var_38 = var_16(var_4,0xb,0,0,(int)in_stack_ffffff38);
        var_38 = var_38 + 1;
        var_39(var_4,&UNK_0006dd8e + var_19);
      }
      if (var_3 != 0) goto LAB_000f117a;
      var_35(var_4,(char *)(var_19 + 0x6ddab));
      in_stack_ffffff38 = (type_1 *)aRegIdx;
      var_16(var_4,0x1f,(int)pParse,var_9,(int)aRegIdx);
      if ((db->flags & 0x2000) == 0) {
LAB_000f124c:
        var_10 = var_40((type_1 *)pParse_00->db,pTab_00,(int *)0x0,0);
        if (var_10 == 0) {
          var_16(var_4,0x7b,(int)pParse,0x40,(int)in_stack_ffffff38);
          var_41(var_4,pTab_00,-6);
          local_5c = 1;
          if (pTab_00->pIndex != (type_17 *)0x0) {
            var_28 = pParse_00->pToplevel;
            if (pParse_00->pToplevel == (type_1 *)0x0) {
              var_28 = pParse_00;
            }
            var_28->isMultiWrite = '\x01';
            in_stack_ffffff38 = (type_1 *)0x0;
            var_42(pParse_00,pTab_00,(int)pParse,(int)pTab,(int *)0x0,-1);
            local_5c = 1;
          }
          goto LAB_000f05be;
        }
      }
      else {
        in_stack_ffffff38 = (type_1 *)0x0;
        var_44 = var_43(pParse_00,pTab_00,0x75,(type_8 *)0x0,(int *)0x0);
        if (var_44 == (type_12 *)0x0) goto LAB_000f124c;
      }
      var_28 = pParse_00->pToplevel;
      if (pParse_00->pToplevel == (type_1 *)0x0) {
        var_28 = pParse_00;
      }
      var_28->isMultiWrite = '\x01';
      in_stack_ffffff38 = (type_1 *)0x5;
      var_45
                (pParse,pTab,(type_12 *)aRegIdx,1,0,5,1,0xff,(type_3)in_stack_ffffff44,in_stack_ffffff48
                 ,in_stack_ffffff4c);
      local_5c = 1;
    }
LAB_000f05be:
    in_stack_ffffff40 = (type_1 *)0xf05c7;
    var_24(var_4,var_9);
    if (var_38 == 0) {
      var_46 = pTab_00->pIndex;
      goto joined_r0x000f05e4;
    }
    var_68 = var_16(var_4,0xb,0,0,(int)in_stack_ffffff38);
    var_9 = var_38 + -1;
    if (var_38 + -1 < 0) {
      var_9 = var_4->nOp + -1;
    }
    pOVar20 = (type_16 *)(var_19 + 0xccb05);
    if (var_4->db->mallocFailed == '\0') {
      pOVar20 = var_4->aOp + var_9;
    }
    pOVar20->p2 = var_4->nOp;
    var_46 = pTab_00->pIndex;
    if (var_46 != (type_17 *)0x0) goto LAB_000f05ea;
  }
  else {
    if (*(int *)var_34 != 0) {
      var_47 = *(type_17 **)(var_34 + 0x10);
      var_50 = 0;
      if (var_47 != (type_17 *)0x0) {
        var_50 = var_16(var_4,0xb,0,0,(int)in_stack_ffffff38);
        in_stack_ffffff38 = (type_1 *)(var_19 + 0x6dd71);
        var_39(var_4,(char *)in_stack_ffffff38);
      }
      goto LAB_000f0322;
    }
    if (bVar21) {
      var_14 = 4;
      var_12 = 4;
      local_6c = (type_4 *)0x0;
      var_50 = 0;
      var_9 = pParse_00->nLabel + -1;
      pParse_00->nLabel = var_9;
      var_47 = (type_17 *)0x0;
      goto LAB_000f0547;
    }
    local_6c = (type_4 *)0x0;
    var_50 = 0;
    var_14 = 4;
    var_47 = (type_17 *)0x0;
LAB_000f0dc0:
    var_38 = 0;
    var_46 = pTab_00->pIndex;
    local_5c = 0;
joined_r0x000f05e4:
    var_68 = 0;
    if (var_46 == (type_17 *)0x0) goto LAB_000f0b10;
LAB_000f05ea:
    bVar21 = false;
    var_63 = 0;
    var_49 = 0;
    do {
      while (*(int *)(var_48 + var_49 * 4) == 0) {
LAB_000f0608:
        var_46 = var_46->pNext;
        var_49 = var_49 + 1;
        if (var_46 == (type_17 *)0x0) goto LAB_000f0ab0;
      }
      if (var_46 == var_47) {
        local_84 = (char *)(var_50 + 1);
        var_63 = var_16(var_4,0xb,0,0,(int)in_stack_ffffff38);
        var_39(var_4,(char *)(var_19 + 0x6ddc6));
        pOVar20 = (type_16 *)(var_19 + 0xccb05);
        var_9 = var_4->nOp + -1;
        if (-1 < var_50) {
          var_9 = var_50;
        }
        if (var_4->db->mallocFailed == '\0') {
          pOVar20 = var_4->aOp + var_9;
        }
        pOVar20->p2 = var_4->nOp;
        if (!bVar21) goto LAB_000f0d78;
      }
      else {
        local_84 = (char *)(pParse_00->nLabel + -1);
        pParse_00->nLabel = (int)local_84;
        if ((!bVar21) && (var_47 == (type_17 *)0x0)) {
LAB_000f0d78:
          in_stack_ffffff40 = (type_1 *)0xf0d8d;
          var_51(var_4,pTab_00,(int)aRegIdx + 1);
          bVar21 = true;
        }
      }
      p1 = var_46->zName;
      var_21 = (char *)(var_19 + 0x6dddd);
      var_35(var_4,var_21);
      if (var_46->pPartIdxWhere != (type_13 *)0x0) {
        var_16(var_4,0x49,0,*(int *)(var_48 + var_49 * 4),(int)var_21);
        psVar6 = pParse_00->db;
        pParse_00->iSelfTab = ~(type_11)aRegIdx;
        if (var_46->pPartIdxWhere == (type_13 *)0x0) {
          if (psVar6->mallocFailed == '\0') {
            in_stack_ffffff40 = (type_1 *)0x10;
            p1 = local_84;
            var_52(pParse_00,(type_13 *)0x0,(int)local_84,0x10);
          }
        }
        else {
          in_stack_ffffff40 = (type_1 *)0xf06be;
          var_54 = var_53(psVar6,var_46->pPartIdxWhere,0,in_stack_ffffff44);
          if (psVar6->mallocFailed == '\0') {
            in_stack_ffffff40 = (type_1 *)0x10;
            p1 = local_84;
            var_52(pParse_00,var_54,(int)local_84,0x10);
          }
          if (var_54 != (type_13 *)0x0) {
            in_stack_ffffff40 = (type_1 *)0xf06d7;
            var_55(psVar6,var_54);
          }
        }
        pParse_00->iSelfTab = 0;
      }
      var_9 = *(int *)(var_48 + var_49 * 4);
      var_28 = (type_1 *)(var_9 + 1);
      if (var_46->nColumn == 0) {
        var_12 = 0;
      }
      else {
        pPVar29 = (type_1 *)0x0;
        do {
          while( true ) {
            p = (type_5 *)((int)&pPVar29->db + (int)&var_28->db);
            var_57 = var_46->aiColumn[(int)pPVar29];
            var_9 = (int)var_57;
            if (var_9 == -2) break;
            piVar19 = aRegIdx;
            if (var_9 == -1) {
              uVar10 = 'P';
              var_10 = var_4->nOp;
              if (var_10 < var_4->nOpAlloc) goto LAB_000f0756;
LAB_000f080d:
              var_56(p,0,(int)p1,(int)in_stack_ffffff40,(int)in_stack_ffffff44);
            }
            else {
              if (var_57 != pTab_00->iPKey) {
                piVar19 = (int *)((int)aRegIdx + var_9 + 1);
              }
              var_10 = var_4->nOp;
              uVar10 = ~(type_6)(var_57 >> 7) + 0x50;
              if (var_4->nOpAlloc <= var_10) goto LAB_000f080d;
LAB_000f0756:
              var_4->nOp = var_10 + 1;
              pOVar20 = var_4->aOp + var_10;
              pOVar20->opcode = uVar10;
              pOVar20->p5 = 0;
              pOVar20->p1 = (int)piVar19;
              pOVar20->p2 = (int)p;
              pOVar20->p3 = 0;
              (pOVar20->p4).i = 0;
              pOVar20->p4type = '\0';
              pOVar20->zComment = (char *)0x0;
            }
            p1 = (char *)(var_19 + 0x6cca1);
            if (-1 < var_9) {
              p1 = pTab_00->aCol[var_9].zName;
            }
            pPVar29 = (type_1 *)((int)&pPVar29->db + 1);
            var_39(var_4,(char *)(var_19 + 0x6b66a));
            var_12 = (type_11)var_46->nColumn;
            if ((int)var_12 <= (int)pPVar29) goto LAB_000f0926;
          }
          psVar6 = pParse_00->db;
          pParse_00->iSelfTab = ~(type_11)aRegIdx;
          var_54 = var_46->aColExpr->a[(int)pPVar29].pExpr;
          if (var_54 == (type_13 *)0x0) {
            if (psVar6->mallocFailed == '\0') {
              var_17(pParse_00,(type_13 *)0x0,(int)p);
            }
          }
          else {
            var_54 = var_53(psVar6,var_54,0,in_stack_ffffff44);
            if (psVar6->mallocFailed == '\0') {
              var_17(pParse_00,var_54,(int)p);
            }
            if (var_54 != (type_13 *)0x0) {
              var_55(psVar6,var_54);
            }
          }
          pParse_00->iSelfTab = 0;
          pPVar17 = (type_1 *)((int)&pPVar29->db + 1);
          p1 = var_46->zName;
          in_stack_ffffff40 = pPVar29;
          var_39(var_4,(char *)(var_19 + 0x6ddf5));
          var_12 = (type_11)var_46->nColumn;
          pPVar29 = pPVar17;
        } while ((int)pPVar17 < (int)var_12);
LAB_000f0926:
        var_9 = *(int *)(var_48 + var_49 * 4);
      }
      var_16(var_4,0x66,(int)var_28,var_12,var_9);
      in_stack_ffffff38 = (type_1 *)(var_19 + 0x6ddee);
      var_39(var_4,(char *)in_stack_ffffff38,var_46->zName);
      if (((var_58 && var_29 == '\0') && (var_6 == var_46)) ||
         (var_12 = (type_11)var_46->onError, var_12 == 0)) {
        in_stack_ffffff40 = (type_1 *)0xf0c23;
        var_24(var_4,(int)local_84);
        goto LAB_000f0608;
      }
      if (var_14 == 0xb) {
        if (var_12 == 0xb) {
          var_12 = 2;
        }
        if (var_46 != var_47) goto LAB_000f09ad;
LAB_000f0c5d:
        var_12 = (-(type_11)(local_6c->pUpsertSet == (type_8 *)0x0) & 0xfffffffe) + 6;
        bVar8 = var_58;
      }
      else {
        var_12 = (type_11)var_14;
        if (var_46 == var_47) goto LAB_000f0c5d;
LAB_000f09ad:
        bVar8 = var_12 == 5 || var_58;
      }
      pPVar29 = (type_1 *)((int)&pTab->zName + var_49);
      in_stack_ffffff38 = var_28;
      var_59(var_4,0x1b,(int)pPVar29,(int)local_84,(int)var_28,(type_11)var_46->nKeyCol);
      var_66 = var_28;
      if (var_6 != var_46) {
        in_stack_ffffff40 = (type_1 *)0xf0a00;
        var_66 = (type_1 *)var_60(pParse_00,var_67);
      }
      if (bVar8) {
        if ((pTab_00->tabFlags & 0x20) == 0) {
          var_16(var_4,0x87,(int)pPVar29,(int)var_66,(int)in_stack_ffffff38);
          if (var_3 != 0) {
            in_stack_ffffff38 = (type_1 *)var_3;
            var_16(var_4,0x35,(int)var_66,(int)local_84,var_3);
            if (0 < var_4->nOp) {
              var_4->aOp[var_4->nOp + -1].p5 = 0x90;
            }
          }
        }
        else {
          if ((var_6 != var_46) && (var_6->nKeyCol != 0)) {
            var_9 = 0;
            do {
              if (var_46->nColumn == 0) {
LAB_000f0f72:
                var_15 = 0xffffffff;
              }
              else {
                var_15 = 0;
                if (var_6->aiColumn[var_9] != *var_46->aiColumn) {
                  do {
                    var_15 = var_15 + 1;
                    if (var_46->nColumn == var_15) goto LAB_000f0f72;
                  } while (var_6->aiColumn[var_9] != var_46->aiColumn[var_15]);
                  var_15 = (type_11)(short)var_15;
                }
              }
              in_stack_ffffff38 = (type_1 *)((int)&var_66->db + var_9);
              var_10 = var_9 + 1;
              var_16(var_4,0x5a,(int)pPVar29,var_15,(int)in_stack_ffffff38);
              var_39(var_4,(char *)(var_19 + 0x6dd5f),pTab_00->zName,
                                 pTab_00->aCol[var_6->aiColumn[var_9]].zName);
              var_9 = var_10;
            } while (var_10 < (int)(type_11)var_6->nKeyCol);
          }
          if (var_3 != 0) {
            var_21 = (char *)(var_4->nOp + (type_11)var_6->nKeyCol);
            pPVar17 = var_66;
            if ((var_46->field_0x37 & 3) == 2) {
              pPVar17 = var_28;
            }
            if (var_6->nKeyCol != 0) {
              local_94 = 0x34;
              var_9 = 0;
              do {
                while( true ) {
                  in_stack_ffffff40 = (type_1 *)0xf104f;
                  zP4 = var_61(pParse_00,var_6->azColl[var_9]);
                  if (var_6->nKeyCol - 1 == var_9) {
                    var_21 = local_84;
                    local_94 = 0x35;
                  }
                  in_stack_ffffff38 = (type_1 *)((int)&pPVar17->db + var_9);
                  var_10 = var_16(var_4,local_94,
                                             (int)var_6->aiColumn[var_9] + var_3 + 1,
                                             (int)var_21,(int)in_stack_ffffff38);
                  var_62(var_4,var_10,(char *)zP4,-2);
                  if (var_4->nOp < 1) break;
                  var_9 = var_9 + 1;
                  var_4->aOp[var_4->nOp + -1].p5 = 0x90;
                  if ((int)(type_11)var_6->nKeyCol <= var_9) goto LAB_000f0a30;
                }
                var_9 = var_9 + 1;
              } while (var_9 < (int)(type_11)var_6->nKeyCol);
            }
          }
        }
      }
LAB_000f0a30:
      if (var_12 == 4) {
LAB_000f0b65:
        var_16(var_4,0xb,0,regOldData,(int)in_stack_ffffff38);
        if (var_46 != var_47) goto LAB_000f0a5e;
LAB_000f0b8a:
        var_16(var_4,0xb,0,var_50 + 1,(int)in_stack_ffffff38);
        var_9 = var_4->nOp + -1;
        if (-1 < var_63) {
          var_9 = var_63;
        }
        pOVar20 = (type_16 *)(var_19 + 0xccb05);
        if (var_4->db->mallocFailed == '\0') {
          pOVar20 = var_4->aOp + var_9;
        }
        pOVar20->p2 = var_4->nOp;
      }
      else {
        if ((int)var_12 < 5) {
          if ((int)var_12 < 1) goto LAB_000f0c80;
          pPVar29 = (type_1 *)0xf0a54;
          var_64(pParse_00,var_12,var_46);
        }
        else {
          if (var_12 == 6) {
            var_36(pParse_00,local_6c,pTab_00,var_46,(int)pPVar29);
            in_stack_ffffff38 = pPVar29;
            goto LAB_000f0b65;
          }
LAB_000f0c80:
          if ((((db->flags & 0x2000) != 0) &&
              (var_44 = var_43(pParse_00,pTab_00,0x75,(type_8 *)0x0,(int *)0x0),
              var_44 != (type_12 *)0x0)) ||
             (((pParse_00->db->flags & 0x4000) != 0 &&
              ((pHVar15 = var_65(&pTab_00->pSchema->fkeyHash,pTab_00->zName,(type_11 *)0x0
                                             ), pHVar15->data != (void *)0x0 ||
               (pTab_00->pFKey != (type_26 *)0x0)))))) {
            pPVar17 = pParse_00->pToplevel;
            if (pParse_00->pToplevel == (type_1 *)0x0) {
              pPVar17 = pParse_00;
            }
            pPVar17->isMultiWrite = '\x01';
          }
          in_stack_ffffff38 = (type_1 *)0x5;
          var_45
                    (pParse,pTab,(type_12 *)var_66,(int)(short)var_67,0,5,
                     (ushort)(var_6 == var_46),(type_3)pPVar29,(type_3)in_stack_ffffff44,in_stack_ffffff48,
                     in_stack_ffffff4c);
          local_5c = 1;
        }
        in_stack_ffffff40 = pPVar29;
        if (var_46 == var_47) goto LAB_000f0b8a;
LAB_000f0a5e:
        in_stack_ffffff40 = (type_1 *)0xf0a69;
        var_24(var_4,(int)local_84);
      }
      if (var_66 == var_28) goto LAB_000f0608;
      if (var_67 == 1) {
        if (var_66 != (type_1 *)0x0) {
          var_8 = pParse_00->nTempReg;
          if (var_8 < 8) {
            pParse_00->nTempReg = var_8 + 1;
            pParse_00->aTempReg[var_8] = (int)var_66;
          }
        }
        goto LAB_000f0608;
      }
      if ((int)var_67 <= pParse_00->nRangeReg) goto LAB_000f0608;
      pParse_00->nRangeReg = var_67;
      var_49 = var_49 + 1;
      pParse_00->iRangeReg = (int)var_66;
      var_46 = var_46->pNext;
    } while (var_46 != (type_17 *)0x0);
LAB_000f0ab0:
    if (var_38 == 0) goto LAB_000f0b10;
  }
  var_16(var_4,0xb,0,var_38,(int)in_stack_ffffff38);
  var_39(var_4,(char *)(var_19 + 0x6de02));
  var_9 = var_4->nOp;
  var_10 = var_9 + -1;
  if (-1 < var_68) {
    var_10 = var_68;
  }
  if (var_4->db->mallocFailed == '\0') {
    var_4->aOp[var_10].p2 = var_9;
  }
  else {
    *(int *)(var_19 + 0xccb0d) = var_9;
  }
LAB_000f0b10:
  *_pkChng = local_5c;
  if (var_69 != *(int *)(var_2 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_70();
  }
  return;
}


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

void MASKED(undefined4 param_1,int param_2,uint param_3,int param_4,char param_5,byte param_6,
                 undefined4 param_7,undefined4 *param_8,int param_9,int *param_10)

{
  char *pcVar1;
  byte bVar2;
  short sVar3;
  int iVar4;
  code *pcVar5;
  bool bVar6;
  byte bVar7;
  byte bVar8;
  char cVar9;
  int *piVar10;
  int *piVar11;
  undefined4 *puVar12;
  uint uVar13;
  uint uVar14;
  int *piVar15;
  int extraout_ECX;
  int *piVar16;
  bool bVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int unaff_EDI;
  int iVar21;
  int *piVar22;
  int in_GS_OFFSET;
  bool bVar23;
  undefined8 uVar24;
  int local_b0;
  int local_ac;
  int local_a8;
  int local_9c;
  undefined4 *local_88;
  int local_84;
  undefined4 *local_80;
  byte local_7b;
  uint local_78;
  int *local_6c;
  int local_60;
  undefined4 local_5c;
  int local_58;
  int local_54;
  int local_48;
  int local_3c [5];
  byte local_28;
  int local_24;
  int local_20;
  
  uVar24 = FUN_0003a401();
  piVar16 = (int *)((ulonglong)uVar24 >> 0x20);
  piVar10 = (int *)uVar24;
  piVar11 = (int *)piVar10[2];
  local_6c = param_10;
  local_7b = param_6;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar4 = *piVar10;
  bVar23 = param_4 != 0;
  if (piVar11 == (int *)0x0) {
    piVar11 = (int *)FUN_00073350();
  }
  iVar21 = (int)*(short *)((int)piVar16 + 0x2a);
  if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {
    bVar2 = 1;
    local_78 = 1;
    local_80 = (undefined4 *)0x0;
  }
  else {
    local_80 = (undefined4 *)piVar16[2];
    if (local_80 == (undefined4 *)0x0) {
FUN_000157a6:
                    /* WARNING: Does not return */
      pcVar5 = (code *)invalidInstructionException();
      (*pcVar5)();
    }
    bVar2 = *(byte *)((int)local_80 + 0x37);
    while ((bVar2 & 3) != 2) {
      local_80 = (undefined4 *)local_80[5];
      if (local_80 == (undefined4 *)0x0) goto FUN_000157a6;
      bVar2 = *(byte *)((int)local_80 + 0x37);
    }
    bVar2 = 0;
    local_78 = (uint)*(ushort *)((int)local_80 + 0x32);
  }
  iVar18 = 0;
  if (0 < iVar21) {
    do {
      while (((short)piVar16[10] == iVar18 ||
             ((param_9 != 0 && (*(int *)(param_9 + iVar18 * 4) < 0))))) {
LAB_000f0048:
        iVar18 = iVar18 + 1;
        if (iVar21 == iVar18) goto LAB_000f0158;
      }
      puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);
      bVar7 = *(byte *)(puVar12 + 3);
      if (bVar7 == 0) goto LAB_000f0048;
      bVar8 = param_6;
      if ((param_6 == 0xb) && (bVar8 = bVar7, bVar7 == 0xb)) {
LAB_000f009f:
        local_a8 = 0;
LAB_000f00a7:
        bVar8 = 2;
        piVar15 = (int *)piVar10[0x1d];
        if ((int *)piVar10[0x1d] == (int *)0x0) {
          piVar15 = piVar10;
        }
        *(undefined1 *)((int)piVar15 + 0x15) = 1;
        puVar12 = (undefined4 *)(piVar16[1] + iVar18 * 0x10);
      }
      else {
        if (bVar8 == 5) {
          local_a8 = 0;
          if (puVar12[1] != 0) {
LAB_000f04a3:
            local_a8 = piVar10[0xe] + -1;
            piVar10[0xe] = local_a8;
            FUN_00073150(local_a8);
            FUN_000cb850();
            FUN_00073150(local_a8);
          }
          goto LAB_000f00a7;
        }
        if (bVar8 == 2) goto LAB_000f009f;
        if (bVar8 < 3) {
          if (bVar8 != 1) goto LAB_000f0025;
        }
        else if (bVar8 != 3) {
          if (bVar8 == 5) goto LAB_000f04a3;
LAB_000f0025:
          FUN_00073150(param_7);
          goto LAB_000f0048;
        }
        local_a8 = 0;
      }
      iVar19 = FUN_000861f0(iVar4,unaff_EDI + 0x6dd5f,*piVar16,*puVar12);
      FUN_00072f80(bVar8,param_3 + 1 + iVar18);
      if (*(char *)(*piVar11 + 0x4d) == '\0') {
        iVar20 = piVar11[0x19] + -0x18 + piVar11[0x1a] * 0x18;
        *(undefined1 *)(iVar20 + 1) = 0xf9;
        *(int *)(iVar20 + 0x10) = iVar19;
      }
      else if (iVar19 != 0) {
        FUN_00044090();
      }
      if (0 < piVar11[0x1a]) {
        *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 1;
      }
      if (local_a8 == 0) goto LAB_000f0048;
      iVar18 = iVar18 + 1;
      FUN_0006dec0();
    } while (iVar21 != iVar18);
  }
LAB_000f0158:
  piVar15 = (int *)piVar16[6];
  if ((piVar15 != (int *)0x0) && ((*(byte *)(iVar4 + 0x1d) & 2) == 0)) {
    local_ac = 0;
    piVar10[0xd] = ~param_3;
    bVar7 = 2;
    if (param_6 != 0xb) {
      bVar7 = param_6;
    }
    piVar22 = piVar15 + 1;
    if (0 < *piVar15) {
      do {
        iVar21 = *piVar22;
        uVar13 = 0;
        if (param_9 == 0) {
LAB_000f023c:
          iVar18 = piVar10[0xe];
          piVar10[0xe] = iVar18 + -1;
          FUN_000c97d0(piVar10,iVar21,iVar18 + -1,0x10);
          if (bVar7 == 4) {
            FUN_00073150(param_7);
          }
          else {
            iVar21 = piVar22[1];
            if (iVar21 == 0) {
              iVar21 = *piVar16;
            }
            if (bVar7 == 5) {
              bVar7 = 2;
            }
            FUN_000744c0(iVar21,0,3);
          }
          FUN_0006dec0();
        }
        else {
          do {
            *(undefined4 *)((int)local_3c + uVar13) = 0;
            uVar13 = uVar13 + 4;
          } while (uVar13 < 0x18);
          local_3c[1] = unaff_EDI + -0xa9f97;
          local_24 = param_9;
          if (iVar21 == 0) {
            if (param_5 == '\0') {
              bVar8 = 0;
              goto LAB_000f0235;
            }
          }
          else {
            FUN_0005c830();
            bVar8 = local_28;
            if (param_5 == '\0') {
LAB_000f0235:
              bVar8 = bVar8 & 0xfd;
            }
            if (bVar8 != 0) goto LAB_000f023c;
          }
        }
        local_ac = local_ac + 1;
        piVar22 = piVar22 + 5;
      } while (local_ac < *piVar15);
    }
    piVar10[0xd] = 0;
  }
  bVar17 = (bool)(param_5 != '\0' & bVar2);
  if (param_10 == (int *)0x0) {
    local_88 = (undefined4 *)0x0;
    local_58 = 0;
LAB_000f0322:
    if (!bVar17) goto LAB_000f0dc0;
    iVar21 = piVar10[0xe] + -1;
    piVar10[0xe] = iVar21;
    uVar13 = (uint)param_6;
    if ((param_6 == 0xb) && (uVar13 = (uint)*(byte *)(piVar16 + 0xc), uVar13 == 0xb)) {
      if ((param_10 == (int *)0x0) || (param_10[4] != 0)) {
        uVar13 = 2;
LAB_000f0547:
        local_60 = 0;
        if (param_4 != 0) goto LAB_000f117a;
      }
      else {
LAB_000f11cd:
        if (param_10[2] == 0) {
          if (param_4 == 0) {
            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
            FUN_00072f80(iVar21,param_3);
            goto LAB_000f0870;
          }
          local_60 = 0;
          uVar13 = 4;
        }
        else {
          if (param_4 == 0) {
            FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
            FUN_00072f80(iVar21,param_3);
            FUN_000f3260(0,param_1);
LAB_000f0870:
            local_60 = 0;
            FUN_00073150(param_7);
            local_5c = 0;
            goto LAB_000f05be;
          }
          uVar13 = 6;
          local_60 = 0;
        }
LAB_000f117a:
        FUN_00072f80(iVar21,param_4);
        if (0 < piVar11[0x1a]) {
          *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;
        }
      }
      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
      FUN_00072f80(iVar21,param_3);
      if (uVar13 < 7) {
                    /* WARNING: Could not recover jumptable at 0x000f05a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (*(code *)(&UNK_000caf71 + *(int *)(unaff_EDI + 0x71541 + uVar13 * 4) + unaff_EDI))();
        return;
      }
      FUN_00086c60();
      local_5c = 0;
    }
    else {
      if ((param_10 != (int *)0x0) && (param_10[4] == 0)) goto LAB_000f11cd;
      if (uVar13 != 5) goto LAB_000f0547;
      local_60 = 0;
      if ((param_6 != 5) && (piVar16[2] != 0)) {
        local_60 = FUN_00073150(0);
        local_60 = local_60 + 1;
        FUN_0007e240(piVar11,&UNK_0006dd8e + unaff_EDI);
      }
      if (param_4 != 0) goto LAB_000f117a;
      FUN_0007e150(piVar11,unaff_EDI + 0x6ddab);
      FUN_00072f80(iVar21,param_3);
      if ((((*(byte *)(iVar4 + 0x1d) & 0x20) == 0) || (iVar21 = FUN_00049a60(0,0), iVar21 == 0)) &&
         (iVar21 = FUN_0004ed00(0), iVar21 == 0)) {
        FUN_00073150(0x40);
        FUN_000626c0();
        local_5c = 1;
        if (piVar16[2] != 0) {
          piVar15 = (int *)piVar10[0x1d];
          if ((int *)piVar10[0x1d] == (int *)0x0) {
            piVar15 = piVar10;
          }
          *(undefined1 *)(piVar15 + 5) = 1;
          FUN_000d1920(param_2,0,0xffffffff);
          local_5c = 1;
        }
      }
      else {
        piVar15 = (int *)piVar10[0x1d];
        if ((int *)piVar10[0x1d] == (int *)0x0) {
          piVar15 = piVar10;
        }
        *(undefined1 *)(piVar15 + 5) = 1;
        FUN_000efa90(param_1,param_2,param_3,1,0,5,1,0xffffffff);
        local_5c = 1;
      }
    }
LAB_000f05be:
    FUN_0006dec0();
    if (local_60 == 0) {
      puVar12 = (undefined4 *)piVar16[2];
      goto joined_r0x000f05e4;
    }
    local_48 = FUN_00073150(0);
    iVar21 = local_60 + -1;
    if (local_60 + -1 < 0) {
      iVar21 = piVar11[0x1a] + -1;
    }
    iVar18 = unaff_EDI + 0xccb05;
    if (*(char *)(*piVar11 + 0x4d) == '\0') {
      iVar18 = piVar11[0x19] + iVar21 * 0x18;
    }
    *(int *)(iVar18 + 8) = piVar11[0x1a];
    puVar12 = (undefined4 *)piVar16[2];
    if (puVar12 != (undefined4 *)0x0) goto LAB_000f05ea;
  }
  else {
    if (*param_10 != 0) {
      local_88 = (undefined4 *)param_10[4];
      local_58 = 0;
      if (local_88 != (undefined4 *)0x0) {
        local_58 = FUN_00073150(0);
        FUN_0007e240(piVar11,unaff_EDI + 0x6dd71);
      }
      goto LAB_000f0322;
    }
    if (bVar17) {
      local_7b = 4;
      uVar13 = 4;
      local_6c = (int *)0x0;
      local_58 = 0;
      iVar21 = piVar10[0xe] + -1;
      piVar10[0xe] = iVar21;
      local_88 = (undefined4 *)0x0;
      goto LAB_000f0547;
    }
    local_6c = (int *)0x0;
    local_58 = 0;
    local_7b = 4;
    local_88 = (undefined4 *)0x0;
LAB_000f0dc0:
    local_60 = 0;
    puVar12 = (undefined4 *)piVar16[2];
    local_5c = 0;
joined_r0x000f05e4:
    local_48 = 0;
    if (puVar12 == (undefined4 *)0x0) goto LAB_000f0b10;
LAB_000f05ea:
    bVar17 = false;
    local_54 = 0;
    local_9c = 0;
    do {
      while (*(int *)(extraout_ECX + local_9c * 4) == 0) {
LAB_000f0608:
        puVar12 = (undefined4 *)puVar12[5];
        local_9c = local_9c + 1;
        if (puVar12 == (undefined4 *)0x0) goto LAB_000f0ab0;
      }
      if (puVar12 == local_88) {
        local_84 = local_58 + 1;
        local_54 = FUN_00073150(0);
        FUN_0007e240(piVar11,unaff_EDI + 0x6ddc6);
        iVar21 = unaff_EDI + 0xccb05;
        iVar18 = piVar11[0x1a] + -1;
        if (-1 < local_58) {
          iVar18 = local_58;
        }
        if (*(char *)(*piVar11 + 0x4d) == '\0') {
          iVar21 = piVar11[0x19] + iVar18 * 0x18;
        }
        *(int *)(iVar21 + 8) = piVar11[0x1a];
        if (!bVar17) goto LAB_000f0d78;
      }
      else {
        local_84 = piVar10[0xe] + -1;
        piVar10[0xe] = local_84;
        if ((!bVar17) && (local_88 == (undefined4 *)0x0)) {
LAB_000f0d78:
          FUN_00073230();
          bVar17 = true;
        }
      }
      FUN_0007e150(piVar11,unaff_EDI + 0x6dddd,*puVar12);
      if (puVar12[9] != 0) {
        FUN_00073150(*(undefined4 *)(extraout_ECX + local_9c * 4));
        iVar21 = *piVar10;
        piVar10[0xd] = ~param_3;
        if (puVar12[9] == 0) {
          if (*(char *)(iVar21 + 0x4d) == '\0') {
            FUN_000c9bf0(piVar10,0,local_84,0x10);
          }
        }
        else {
          iVar18 = FUN_0005e9a0();
          if (*(char *)(iVar21 + 0x4d) == '\0') {
            FUN_000c9bf0(piVar10,iVar18,local_84,0x10);
          }
          if (iVar18 != 0) {
            FUN_00063d60();
          }
        }
        piVar10[0xd] = 0;
      }
      iVar18 = *(int *)(extraout_ECX + local_9c * 4);
      iVar21 = iVar18 + 1;
      if (*(short *)(puVar12 + 0xd) == 0) {
        uVar13 = 0;
      }
      else {
        iVar18 = 0;
        do {
          while( true ) {
            sVar3 = *(short *)(puVar12[1] + iVar18 * 2);
            iVar19 = (int)sVar3;
            if (iVar19 == -2) break;
            uVar13 = param_3;
            if (iVar19 == -1) {
              cVar9 = 'P';
              iVar20 = piVar11[0x1a];
              if (iVar20 < piVar11[0x1b]) goto LAB_000f0756;
LAB_000f080d:
              FUN_00072e30(iVar21 + iVar18,0);
            }
            else {
              if (sVar3 != (short)piVar16[10]) {
                uVar13 = param_3 + 1 + iVar19;
              }
              iVar20 = piVar11[0x1a];
              cVar9 = ~(byte)(sVar3 >> 7) + 0x50;
              if (piVar11[0x1b] <= iVar20) goto LAB_000f080d;
LAB_000f0756:
              piVar11[0x1a] = iVar20 + 1;
              pcVar1 = (char *)(piVar11[0x19] + iVar20 * 0x18);
              *pcVar1 = cVar9;
              pcVar1[2] = '\0';
              pcVar1[3] = '\0';
              *(uint *)(pcVar1 + 4) = uVar13;
              *(int *)(pcVar1 + 8) = iVar21 + iVar18;
              pcVar1[0xc] = '\0';
              pcVar1[0xd] = '\0';
              pcVar1[0xe] = '\0';
              pcVar1[0xf] = '\0';
              pcVar1[0x10] = '\0';
              pcVar1[0x11] = '\0';
              pcVar1[0x12] = '\0';
              pcVar1[0x13] = '\0';
              pcVar1[1] = '\0';
              pcVar1[0x14] = '\0';
              pcVar1[0x15] = '\0';
              pcVar1[0x16] = '\0';
              pcVar1[0x17] = '\0';
            }
            iVar20 = unaff_EDI + 0x6cca1;
            if (-1 < iVar19) {
              iVar20 = *(int *)(iVar19 * 0x10 + piVar16[1]);
            }
            iVar18 = iVar18 + 1;
            FUN_0007e240(piVar11,unaff_EDI + 0x6b66a,iVar20);
            uVar13 = (uint)*(ushort *)(puVar12 + 0xd);
            if ((int)uVar13 <= iVar18) goto LAB_000f0926;
          }
          iVar19 = *piVar10;
          piVar10[0xd] = ~param_3;
          if (*(int *)(iVar18 * 0x14 + puVar12[10] + 4) == 0) {
            if (*(char *)(iVar19 + 0x4d) == '\0') {
              FUN_000cb850();
            }
          }
          else {
            iVar20 = FUN_0005e9a0();
            if (*(char *)(iVar19 + 0x4d) == '\0') {
              FUN_000cb850();
            }
            if (iVar20 != 0) {
              FUN_00063d60();
            }
          }
          piVar10[0xd] = 0;
          iVar19 = iVar18 + 1;
          FUN_0007e240(piVar11,unaff_EDI + 0x6ddf5,*puVar12,iVar18);
          uVar13 = (uint)*(ushort *)(puVar12 + 0xd);
          iVar18 = iVar19;
        } while (iVar19 < (int)uVar13);
LAB_000f0926:
        iVar18 = *(int *)(extraout_ECX + local_9c * 4);
      }
      FUN_00072f80(uVar13,iVar18);
      FUN_0007e240(piVar11,unaff_EDI + 0x6ddee,*puVar12);
      if (((bVar23 && param_5 == '\0') && (local_80 == puVar12)) ||
         (uVar13 = (uint)*(byte *)((int)puVar12 + 0x36), uVar13 == 0)) {
        FUN_0006dec0();
        goto LAB_000f0608;
      }
      if (local_7b == 0xb) {
        if (uVar13 == 0xb) {
          uVar13 = 2;
        }
        if (puVar12 != local_88) goto LAB_000f09ad;
LAB_000f0c5d:
        uVar13 = (-(uint)(local_6c[2] == 0) & 0xfffffffe) + 6;
        bVar6 = bVar23;
      }
      else {
        uVar13 = (uint)local_7b;
        if (puVar12 == local_88) goto LAB_000f0c5d;
LAB_000f09ad:
        bVar6 = uVar13 == 5 || bVar23;
      }
      FUN_00072fe0(local_84,iVar21,*(undefined2 *)((int)puVar12 + 0x32));
      local_b0 = iVar21;
      if (local_80 != puVar12) {
        local_b0 = FUN_00045e40();
      }
      if (bVar6) {
        if ((*(byte *)(piVar16 + 9) & 0x20) == 0) {
          FUN_00073150(local_b0);
          if (param_4 != 0) {
            FUN_00072f80(local_84,param_4);
            if (0 < piVar11[0x1a]) {
              *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;
            }
          }
        }
        else {
          if ((local_80 != puVar12) && (*(short *)((int)local_80 + 0x32) != 0)) {
            iVar18 = 0;
            do {
              iVar19 = iVar18 * 2;
              sVar3 = *(short *)(local_80[1] + iVar18 * 2);
              if (*(ushort *)(puVar12 + 0xd) == 0) {
LAB_000f0f72:
                uVar14 = 0xffffffff;
              }
              else {
                uVar14 = 0;
                if (sVar3 != *(short *)puVar12[1]) {
                  do {
                    uVar14 = uVar14 + 1;
                    if (*(ushort *)(puVar12 + 0xd) == uVar14) goto LAB_000f0f72;
                  } while (sVar3 != ((short *)puVar12[1])[uVar14]);
                  uVar14 = (uint)(short)uVar14;
                }
              }
              iVar20 = local_b0 + iVar18;
              iVar18 = iVar18 + 1;
              FUN_00072f80(uVar14,iVar20);
              FUN_0007e240(piVar11,unaff_EDI + 0x6dd5f,*piVar16,
                           *(undefined4 *)(*(short *)(local_80[1] + iVar19) * 0x10 + piVar16[1]));
            } while (iVar18 < (int)(uint)*(ushort *)((int)local_80 + 0x32));
          }
          if (param_4 != 0) {
            iVar19 = piVar11[0x1a] + (uint)*(ushort *)((int)local_80 + 0x32);
            iVar18 = local_b0;
            if ((*(byte *)((int)puVar12 + 0x37) & 3) == 2) {
              iVar18 = iVar21;
            }
            if (*(ushort *)((int)local_80 + 0x32) != 0) {
              iVar20 = 0;
              do {
                while( true ) {
                  FUN_0008c270();
                  if (*(ushort *)((int)local_80 + 0x32) - 1 == iVar20) {
                    iVar19 = local_84;
                  }
                  FUN_00072f80(iVar19,iVar18 + iVar20);
                  FUN_00062750(0xfffffffe);
                  if (piVar11[0x1a] < 1) break;
                  iVar20 = iVar20 + 1;
                  *(undefined2 *)(piVar11[0x19] + piVar11[0x1a] * 0x18 + -0x16) = 0x90;
                  if ((int)(uint)*(ushort *)((int)local_80 + 0x32) <= iVar20) goto LAB_000f0a30;
                }
                iVar20 = iVar20 + 1;
              } while (iVar20 < (int)(uint)*(ushort *)((int)local_80 + 0x32));
            }
          }
        }
      }
LAB_000f0a30:
      if (uVar13 == 4) {
LAB_000f0b65:
        FUN_00073150(param_7);
        if (puVar12 != local_88) goto LAB_000f0a5e;
LAB_000f0b8a:
        FUN_00073150(local_58 + 1);
        iVar18 = piVar11[0x1a] + -1;
        if (-1 < local_54) {
          iVar18 = local_54;
        }
        iVar19 = unaff_EDI + 0xccb05;
        if (*(char *)(*piVar11 + 0x4d) == '\0') {
          iVar19 = piVar11[0x19] + iVar18 * 0x18;
        }
        *(int *)(iVar19 + 8) = piVar11[0x1a];
      }
      else {
        if ((int)uVar13 < 5) {
          if ((int)uVar13 < 1) goto LAB_000f0c80;
          FUN_00097090();
        }
        else {
          if (uVar13 == 6) {
            FUN_000f3260(puVar12,local_9c + param_2);
            goto LAB_000f0b65;
          }
LAB_000f0c80:
          if ((((*(byte *)(iVar4 + 0x1d) & 0x20) != 0) && (iVar18 = FUN_00049a60(0,0), iVar18 != 0))
             || (((*(byte *)(*piVar10 + 0x1d) & 0x40) != 0 &&
                 ((iVar18 = FUN_00049430(), *(int *)(iVar18 + 8) != 0 || (piVar16[4] != 0)))))) {
            piVar15 = (int *)piVar10[0x1d];
            if ((int *)piVar10[0x1d] == (int *)0x0) {
              piVar15 = piVar10;
            }
            *(undefined1 *)(piVar15 + 5) = 1;
          }
          FUN_000efa90(param_1,param_2,local_b0,(int)(short)local_78,0,5,local_80 == puVar12,
                       local_9c + param_2);
          local_5c = 1;
        }
        if (puVar12 == local_88) goto LAB_000f0b8a;
LAB_000f0a5e:
        FUN_0006dec0();
      }
      if (local_b0 == iVar21) goto LAB_000f0608;
      if (local_78 == 1) {
        if (local_b0 != 0) {
          bVar2 = *(byte *)((int)piVar10 + 0x13);
          if (bVar2 < 8) {
            *(byte *)((int)piVar10 + 0x13) = bVar2 + 1;
            piVar10[bVar2 + 0x24] = local_b0;
          }
        }
        goto LAB_000f0608;
      }
      if ((int)local_78 <= piVar10[7]) goto LAB_000f0608;
      piVar10[7] = local_78;
      local_9c = local_9c + 1;
      piVar10[8] = local_b0;
      puVar12 = (undefined4 *)puVar12[5];
    } while (puVar12 != (undefined4 *)0x0);
LAB_000f0ab0:
    if (local_60 == 0) goto LAB_000f0b10;
  }
  FUN_00073150(local_60);
  FUN_0007e240(piVar11,unaff_EDI + 0x6de02);
  iVar4 = piVar11[0x1a];
  iVar21 = iVar4 + -1;
  if (-1 < local_48) {
    iVar21 = local_48;
  }
  if (*(char *)(*piVar11 + 0x4d) == '\0') {
    *(int *)(piVar11[0x19] + iVar21 * 0x18 + 8) = iVar4;
  }
  else {
    *(int *)(unaff_EDI + 0xccb0d) = iVar4;
  }
LAB_000f0b10:
  *param_8 = local_5c;
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00153870();
  }
  return;
}

